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

编译器/解释器

开发平台:

Others

  1. /* This is test.g which tests simple AST refs and construction */
  2. <<
  3. typedef ANTLRCommonToken ANTLRToken;
  4. #include "DLGLexer.h"
  5. #include "PBlackBox.h"
  6. class AST : public ASTBase {
  7. public:
  8. ANTLRTokenPtr token;
  9. AST(ANTLRTokenPtr t) { token = t; }
  10. void preorder_action() {
  11. char *s = token->getText();
  12. printf(" %s", s);
  13. }
  14. };
  15. int main()
  16. {
  17. ParserBlackBox<DLGLexer, Expr, ANTLRToken> p(stdin);
  18. ASTBase *root = NULL;
  19. p.parser()->e(&root);
  20. root->preorder();
  21. printf("n");
  22. root->destroy();
  23. return 0;
  24. }
  25. >>
  26. #token "[ tn]+" <<skip();>>
  27. #token Eof "@"
  28. class Expr { /* Define a grammar class */
  29. e : mult_expr ( ("+"^|"-"^) mult_expr )*
  30. ;
  31. mult_expr
  32. : atom ( ("*"^|"/"^) atom )*
  33. ;
  34. atom: IDENTIFIER
  35. | NUMBER
  36. ;
  37. }
  38. #token IDENTIFIER "[a-z]+"
  39. #token NUMBER "[0-9]+"