1parser grammar VecMath_Parser;
2
3options {
4    output=AST;
5}
6
7tokens {
8    SHIFT;
9    VEC;
10}
11
12public
13prog
14   : stat+ ;
15
16stat
17   : ID EQUAL expr -> ^( EQUAL ID expr )
18   | PRINT^ expr
19   ;
20
21expr
22   : multExpr ( PLUS^ multExpr )*
23   ;
24
25multExpr
26   : primary ( ( MULT^ | DOT^ ) primary )*
27   ;
28
29primary
30   :   INT
31   |   ID
32   |   OPEN_SQUARE expr ( COMMA expr )* CLOSE_SQUARE -> ^( VEC expr+ )
33   |   OPEN_BRACE expr CLOSE_BRACE             -> expr
34   ;
35
36