2012-01-12 03:21:05 +08:00
|
|
|
grammar A;
|
|
|
|
|
2012-02-14 12:47:19 +08:00
|
|
|
/*
|
|
|
|
Auto gen:
|
|
|
|
public Token ID() { }
|
|
|
|
public List<Token> x() { }
|
|
|
|
public Token x(int i) { }
|
|
|
|
public eContext e() { }
|
|
|
|
or: public List<eContext> e() { }
|
|
|
|
*/
|
2012-02-15 05:59:53 +08:00
|
|
|
//z : ID INT+ e z+ X X -> Foo;
|
|
|
|
|
|
|
|
/*
|
|
|
|
e : f* | f* ;
|
|
|
|
|
|
|
|
f : F ;
|
|
|
|
|
|
|
|
statement
|
|
|
|
: 'if' E statement ('else' statement)? -> Foo
|
|
|
|
| 'for' '(' E ')' statement
|
|
|
|
;
|
|
|
|
*/
|
|
|
|
|
2012-02-14 12:47:19 +08:00
|
|
|
|
|
|
|
/*
|
2012-02-14 01:16:29 +08:00
|
|
|
s : Q q=e {Object o=$q.v;} -> one
|
|
|
|
| z=e {Object o=$z.v;}
|
|
|
|
;
|
2012-02-15 05:59:53 +08:00
|
|
|
*/
|
2012-01-12 03:21:05 +08:00
|
|
|
|
|
|
|
e returns [int v]
|
2012-02-14 01:16:29 +08:00
|
|
|
: a=e op='*' b=e {$v = $a.v * $b.v;} -> mult
|
|
|
|
| b=e '+' e
|
|
|
|
| '(' x=e ')'
|
|
|
|
;
|
2012-02-15 05:59:53 +08:00
|
|
|
|
2012-02-14 01:16:29 +08:00
|
|
|
/*
|
2012-02-14 12:47:19 +08:00
|
|
|
INT : '9';
|
2012-02-14 01:16:29 +08:00
|
|
|
a : u=A A -> x
|
|
|
|
| B b {Token t=$B;} -> y
|
|
|
|
| C+ -> z
|
|
|
|
| d=D
|
2012-01-12 03:21:05 +08:00
|
|
|
;
|
|
|
|
|
2012-02-14 01:16:29 +08:00
|
|
|
b : B ;
|
|
|
|
*/
|