minor
[prop.git] / tools / test / g2.pcc
blob5c8f255d0bb56f9f26d8630582f27174ea17bdf4
1 //
2 //  An ambiguious grammar with ambiguity resolved using precedence rules
3 //
5 datatype T :: lexeme = IDENT | INTEGER ;
7 syntax class Expressions {};
9 syntax Expressions 
10 {  
11     //  '*' and '/' bind tighter to the left
12     //  '+' and '-' have lower precedence
14     left: 1 '*' '/';  
15     left: 2 '+' '-';  
16     E(int) : E '+' E            { $$ = $1 + $3; }
17            | E '-' E            { $$ = $1 - $3; }
18            | E '*' E            { $$ = $1 * $3; }
19            | E '/' E            { $$ = $1 / $3; }
20            | '(' E ')'  { $$ = $2; }
21            | IDENT
22            | INTEGER
23            ;