/* This is test.g which tests a simple DLG-based scanner * with user-defined tokens */ /* Here, we use #tokdefs to define token types, but still let DLG do the * lexing. ANTLR will not create a tokens.h file. */ #tokdefs "mytokens.h" << #include "DLGLexer.h" /* include definition of DLGLexer. * This cannot be generated automatically because * ANTLR has no idea what you will call this file * with the DLG command-line options. */ typedef ANTLRCommonToken ANTLRToken; int main() { ANTLRTokenPtr aToken = new ANTLRToken; DLGFileInput in(stdin); DLGLexer scan(&in); ANTLRTokenBuffer pipe(&scan); scan.setToken(mytoken(aToken)); Expr parser(&pipe); parser.init(); parser.e(); return 0; } >> #token "[\ \t\n]+" <> class Expr { /* Define a grammar class */ e : IDENTIFIER NUMBER "@" <getText(), $2->getText());>> ; } #token IDENTIFIER "[a-z]+" #token NUMBER "[0-9]+"