Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.68 KB | None | 0 0
  1. grammar FOOL;
  2.  
  3. @header {
  4. import ast.*;
  5. }
  6.  
  7. @lexer::members {
  8. int lexicalErrors=0;
  9. }
  10.  
  11.  
  12. /*------------------------------------------------------------------
  13. * PARSER RULES
  14. *------------------------------------------------------------------*/
  15.  
  16. prog returns [Node ast]: e=exp { $ast = new ProgNode($e.ast); } SEMIC EOF;
  17.  
  18. exp returns [Node ast]: t=term { $ast = $t.ast; } (PLUS t2=term { $ast = new PlusNode($ast, $t2.ast); })* ;
  19.  
  20. term returns [Node ast]: f=factor { $ast = $f.ast; } (TIMES f2=factor { $ast = new TimesNode($ast, $f2.ast); })* ;
  21.  
  22. factor returns [Node ast]: v=value { $ast = $v.ast; } (EQ v2=value { $ast = new EqualNode($ast, $v2.ast); })* ; // EqualNode
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement