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

编译器/解释器

开发平台:

Others

  1. <<
  2. #include ATOKPTR_H // define smart pointers
  3. class ANTLRToken : public ANTLRCommonToken {
  4. public:
  5. int muck;
  6. public:
  7.     ANTLRToken(ANTLRTokenType t, ANTLRChar *s) : ANTLRCommonToken(t,s)
  8. { muck = atoi(s); }
  9.     ANTLRToken() {;}
  10.     ANTLRChar *getText() const { return ""; }
  11.     void setText(const ANTLRChar *s) { ; }
  12.     virtual ANTLRAbstractToken *makeToken(ANTLRTokenType t, char *s, int line)
  13. {
  14. ANTLRToken *tk = new ANTLRToken(t,s);
  15. tk->muck = atoi(s);
  16. return tk;
  17. }
  18. };
  19. #include "DLGLexer.h"
  20. #include "PBlackBox.h"
  21. int main()
  22. {
  23. ParserBlackBox<DLGLexer, Expr, ANTLRToken> p(stdin);
  24. p.parser()->calc();
  25. return 0;
  26. }
  27. >>
  28. #token "[ tn]+" <<skip();>>
  29. class Expr {
  30. calc: <<int r;>>
  31. e>[r]
  32. <<printf("result is %dn", r);>>
  33. ;
  34. e > [int r]
  35. : <<int b;>>
  36. e2>[$r] ( "+" e2>[b] <<$r+=b;>> )*
  37. ;
  38. e2 > [int r]
  39. : NUMBER <<$r=mytoken($1)->muck;>>
  40. ( "*" NUMBER <<$r*=mytoken($2)->muck;>> )*
  41. ;
  42. }
  43. #token NUMBER "[0-9]+"