source: release-kits/lirk3/resources/gs3-release-maker/apache-ant-1.6.5/src/etc/testcases/taskdefs/optional/antlr/antlr.g@ 14982

Last change on this file since 14982 was 14982, checked in by oranfry, 16 years ago

initial import of LiRK3

File size: 619 bytes
Line 
1class CalcParser extends Parser;
2options {
3 buildAST = true; // uses CommonAST by default
4}
5
6expr
7 : mexpr (PLUS^ mexpr)* SEMI!
8 ;
9
10mexpr
11 : atom (STAR^ atom)*
12 ;
13
14atom: INT
15 ;
16
17class CalcLexer extends Lexer;
18
19WS : (' '
20 | '\t'
21 | '\n'
22 | '\r')
23 { _ttype = Token.SKIP; }
24 ;
25
26LPAREN: '('
27 ;
28
29RPAREN: ')'
30 ;
31
32STAR: '*'
33 ;
34
35PLUS: '+'
36 ;
37
38SEMI: ';'
39 ;
40
41protected
42DIGIT
43 : '0'..'9'
44 ;
45
46INT : (DIGIT)+
47 ;
48
49class CalcTreeWalker extends TreeParser;
50
51expr returns [float r]
52{
53 float a,b;
54 r=0;
55}
56 : #(PLUS a=expr b=expr) {r = a+b;}
57 | #(STAR a=expr b=expr) {r = a*b;}
58 | i:INT {r = (float)Integer.parseInt(i.getText());}
59 ;
60
Note: See TracBrowser for help on using the repository browser.