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

编译器/解释器

开发平台:

Others

  1. /* This is test.g which tests a simple DLG-based scanner using string input */
  2. <<
  3. typedef ANTLRCommonToken ANTLRToken;
  4. #include "DLGLexer.h"
  5. #include "PBlackBox.h"
  6. int main(int argc, char **argv)
  7. {
  8. if ( argc==1 ) {fprintf(stderr, "how about an argument?n"); exit(1);}
  9. DLGStringInput in(argv[1]); /* create an input stream for DLG */
  10. DLGLexer scan(&in); /* create scanner reading from stdin */
  11. ANTLRTokenBuffer pipe(&scan); /* make pipe between lexer & parser */
  12. ANTLRTokenPtr aToken = new ANTLRToken;
  13. scan.setToken(mytoken(aToken));
  14. Expr parser(&pipe); /* create parser of type Expr hooked to scanner */
  15. parser.init(); /* init the parser; prime lookahead etc... */
  16. parser.e(); /* start parsing at rule 'e' of that parser */
  17. return 0;
  18. }
  19. >>
  20. #token "[ tn]+" <<skip();>>
  21. #token Eof "@"
  22. #tokclass My { IDENTIFIER NUMBER }
  23. class Expr { /* Define a grammar class */
  24. e : My My Eof
  25. <<fprintf(stderr, "text is %s,%sn", $1->getText(), $2->getText());>>
  26. ;
  27. }
  28. #token IDENTIFIER "[a-z]+"
  29. #token NUMBER "[0-9]+"