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