grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals generate myDsl "xtext.org/example/mydsl/MyDsl" Model: st+=Expr*; Expr: Text | Var ; Text: TXT; Var: '${' IDENT '}' ; terminal IDENT: ('a'..'z')+ ; terminal TXT: ('a'..'z')* ;
${abc}qwerty${test}
Model: st+=Expr*; Expr: Text | Var; Text: r = rule2; Var: r = rule1; terminal rule1: '${' ('a'..'z')+ '}'; terminal rule2: ('a'..'z')*;Your problem is that every sequence of letters os considered to be IDENT (because it's first), so nothing is for TXT terminal]]>
terminal rule1: '${' name=('a'..'z')+ '}';
Model: st+=Expr*; Expr: Text | Var; Text: n = name; Var: '${' n = name '}'; terminal name: ('a'..'z')+;