grammar org.TestScriptDSL with org.eclipse.xtext.common.Terminals generate testScriptDSL "http://www.TestScriptDSL.org" TestScriptDSL: (elements+=AbstractElement)*; AbstractElement: stmt=Stmt; QualifiedName: ID ('.' ID)*; Import: 'import' importedNamespace=QualifiedNameWithWildcard; QualifiedNameWithWildcard: QualifiedName '.*'?; QualifiedIndex: INT|STRING; QualifiedValue: STRING|'True'|'False'|INT|'{}' ; VarDec: name=ID('['index=QualifiedIndex']')? '=' value=QualifiedValue; Stmt: type=(Exp|Import) ; Exp: left=Equal ; Ret: 'return' name=ID ; Var: name=ID ; Val: name=QualifiedValue ; Dot returns Exp: left=Array ({Dot.left=current} op='.'right=Array)* ; Array returns Exp: left=Primary ({Array.left=current} op='['right=Primary']')* ; Primary returns Exp: op='(' left=Equal ')' |left=Var|left=Val ; Equal returns Exp: left=AddAndSub ({Euqal.left=current} op='=' right=AddAndSub)* ; AddAndSub returns Exp: left=MulAndDiv ({AddAndSub.left=current} op=('+'|'-') right=MulAndDiv)* ; MulAndDiv returns Exp: left=Dot ({MulAndDiv.left=current} op=('*'|'/') right=Dot)* ;