Question #1 is ... what do you want? (No, seriously.) What interpretation of these three strings do you want to be “correct?” Are they three distinct cases, or examples of the same one?
The interpretation that I guess you probably want is that there are only three tokens of interest: '{', '}', <ident>. The grammar, in quasi-BNF syntax, would then become:
<statement> ::= <ident>
| '{' <statement>+ '}'
;
<ident> ::= /[A-Za-z0-9]/
;
This would be a simple left-tail recursive case. But I am sure that my syntax is not actually sufficient for your needs, because if it were, you would scarcely need a parser with which to solve it.
Please provide a full representative example of the type of data you need to parse, and we’ll help you write the proper grammar-mojo. It does take practice.