grammar regions; @header{ package regionsparser; import blah.blub.*; } @members { public String asdf = "Hello World!"; } start : region EOF; region returns [Region r]: UNITCIRCLE { r = new UnitCircle(); } | UNION LPAR r1=region COMMA r2=region RPAR { r = new UnionRegion(r1,r2); } | SCALE LPAR n=number COMMA r1=region RPAR { r = new ScaleRegion(n,r1); } ; number returns [int value] : i=INT {value = Integer.parseInt(i.text);} ; UNION : 'union' ; SCALE : 'scale' ; UNITCIRCLE : 'unitcircle' ; LPAR : '('; RPAR : ')'; COMMA : ','; INT : '0'..'9'+ ;