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

编译器/解释器

开发平台:

Others

  1. /* Ariel Tamches (tamches@cs.wisc.edu):
  2.  * This tests linking in a simple non-DLG scanner with user-defined token
  3.  * types.
  4.  */
  5. /* All TokenType's must have some end-of-file token;  You must define
  6.  * it with setEofToken() to your end of input token.
  7.  *
  8.  * We assume that #tokdefs is  employed for this example; i.e., ANTLR does
  9.  * NOT assign token numbers.
  10.  *
  11.  * ANTLR option -gx must be used to turn off generation of DLG crud (when you
  12.  * want to define your own token stream).
  13.  */
  14. #tokdefs "mytokens.h"
  15. /* user should define ANTLRToken outside of #header since AToken.h would
  16.  * not have been included yet.  You can force inclusion of AToken.h if
  17.  * you must use #header, however.
  18.  */
  19. <<
  20. typedef ANTLRCommonToken ANTLRToken; /* use a predefined Token class */
  21. >>
  22. /* At this point, ANTLRToken and ANTLRTokenStream are defined, user must now
  23.  * derive a class from ANTLRTokenStream (which embodies the user's scanner)
  24.  */
  25. <<#include "MyLexer.h">>
  26. <<
  27. int main()
  28. {
  29. /* create one of my scanners */
  30. MyLexer scan;
  31. ANTLRTokenBuffer pipe(&scan);
  32. /* create a parser of type Expr hooked to my scanner */
  33. Expr parser(&pipe);
  34. parser.init();
  35. parser.setEofToken(Eof);
  36. parser.e(); /* start parsing at rule 'e' of that parser */
  37. return 0;
  38. }
  39. >>
  40. class Expr {
  41. e : IDENTIFIER NUMBER
  42. <<fprintf(stderr, "text is %s,%sn", $1->getText(), $2->getText());>>
  43. Eof
  44. ;
  45. }