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

编译器/解释器

开发平台:

Others

  1. /* This grammar demonstrates the use of two parsers sharing a token 
  2.  * vocabulary with a single lexer.
  3.  */
  4. header {
  5. /* empty header */
  6. }
  7. options {
  8. language=Cpp;
  9. }
  10. class SimpleParser extends Parser;
  11. options {
  12. k=2;
  13. tokenVocabulary=Simple;
  14. }
  15. simple :  (x)+;
  16. x :
  17. (a)=> a
  18. |
  19. b
  20. ;
  21. a :  A B C;
  22. b : A B D;
  23. class SimpleParser2 extends Parser;
  24. options {
  25. k=3;
  26. tokenVocabulary=Simple;
  27. }
  28. simple :  (x)+;
  29. x :
  30. a
  31. |
  32. b
  33. ;
  34. a :  C B A;
  35. b : D B A;
  36. class SimpleLexer extends Lexer;
  37. options {
  38. tokenVocabulary=Simple;
  39. }
  40. WS_ : (' '
  41. | 't'
  42. | 'n'
  43. | 'r')
  44. { _ttype = Token::SKIP; }
  45. ;
  46. A : 'a' | 'A' ;
  47. B : 'b' | 'B' ;
  48. C : 'c' | 'C' ;
  49. D : 'd' | 'D' ;