]> pd.if.org Git - pccts/blob - testcpp/7/test.g
auto commit for import
[pccts] / testcpp / 7 / test.g
1 <<
2 #include ATOKPTR_H      // define smart pointers
3
4 class ANTLRToken : public ANTLRCommonToken {
5 public:
6         int muck;
7 public:
8     ANTLRToken(ANTLRTokenType t, ANTLRChar *s) : ANTLRCommonToken(t,s)
9                 { muck = atoi(s); }
10     ANTLRToken() {;}
11     ANTLRChar *getText() { return ""; }
12     void setText(ANTLRChar *s) { ; }
13     virtual ANTLRAbstractToken *makeToken(ANTLRTokenType t, char *s, int line)
14                 {
15                         ANTLRToken *tk = new ANTLRToken(t,s);
16                         tk->muck = atoi(s);
17                         return tk;
18                 }
19 };
20
21 #include "DLGLexer.h"
22 #include "PBlackBox.h"
23
24 int main()
25 {
26         ParserBlackBox<DLGLexer, Expr, ANTLRToken> p(stdin);
27
28         p.parser()->calc();
29         return 0;
30 }
31 >>
32
33 #token "[\ \t\n]+"      <<skip();>>
34
35 class Expr {
36
37 calc:   <<int r;>>
38                 e>[r]
39                 <<printf("result is %d\n", r);>>
40         ;
41
42 e > [int r]
43         :       <<int b;>>
44                 e2>[$r] ( "\+" e2>[b] <<$r+=b;>> )*
45         ;
46
47 e2 > [int r]
48         :       NUMBER <<$r=mytoken($1)->muck;>>
49                 ( "\*" NUMBER <<$r*=mytoken($2)->muck;>> )*
50         ;
51
52 }
53
54 #token NUMBER           "[0-9]+"
55