calc.g
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

Others

  1. options {
  2. language = "Sather";
  3. }
  4. class CALC_PARSER extends Parser;
  5. options {
  6. buildAST = true; // uses CommonAST by default
  7. }
  8. expr
  9. : mexpr (PLUS^ mexpr)* SEMI!
  10. ;
  11. mexpr
  12. : atom (STAR^ atom)*
  13. ;
  14. atom: INT
  15. ;
  16. class CALC_LEXER extends Lexer;
  17. WS : (' '
  18. | 't'
  19. | 'n'
  20. | 'r')
  21. { sa_ttype := ANTLR_COMMON_TOKEN::SKIP; }
  22. ;
  23. LPAREN: '('
  24. ;
  25. RPAREN: ')'
  26. ;
  27. STAR: '*'
  28. ;
  29. PLUS: '+'
  30. ;
  31. SEMI: ';'
  32. ;
  33. protected
  34. DIGIT
  35. : '0'..'9'
  36. ;
  37. INT : (DIGIT)+
  38. ;
  39. class CALC_TREE_WALKER extends TreeParser;
  40. expr returns [ r : FLT ]
  41. {
  42. a , b : FLT;
  43. r := 0.0;
  44. }
  45. : #(PLUS a=expr b=expr) {r := a+b;}
  46. | #(STAR a=expr b=expr) {r := a*b;}
  47. | i:INT {r := #FLT( i.text );}
  48. ;