Skip to content

Instantly share code, notes, and snippets.

@zapu
Created June 11, 2013 16:36
Show Gist options
  • Save zapu/5758425 to your computer and use it in GitHub Desktop.
Save zapu/5758425 to your computer and use it in GitHub Desktop.
ANTLR4 grammar. parses and returns int expression e.g. "-2 * --(1+-1)"
grammar negationtest;
expression: ar_expression { System.out.println($ar_expression.ret); }
;
ar_expression returns [Integer ret]:
a = mult_expression { $ret = $a.ret; }
(
('+' b = mult_expression { $ret += $b.ret; } ) |
('-' c = mult_expression { $ret -= $c.ret; } )
)*
;
mult_expression returns [Integer ret]:
a = atom { $ret = $a.ret; } (
('*' b = atom { $ret *= $b.ret; } ) |
('/' c = atom { $ret /= $c.ret; } )
)*
;
atom returns [Integer ret]:
('-' a = atom {$ret = - $a.ret; } ) |
b = atom_real { $ret = $b.ret; }
;
atom_real returns [Integer ret]:
INT {$ret = Integer.parseInt($INT.text); } |
'(' ar_expression { $ret = $ar_expression.ret; } ')'
;
INT : '0'..'9'+ ;
ID : 'a'..'z'+ ;
WS : (' '|'\r'|'\n') -> skip;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment