1grammar TestActionFeatures;
2
3options {
4    language=CSharp3;
5    TokenLabelType=CommonToken;
6    output=AST;
7    ASTLabelType=CommonTree;
8}
9
10@lexer::namespace{Antlr3.Runtime.Test}
11@parser::namespace{Antlr3.Runtime.Test}
12
13@parser::header{using Console = System.Console;}
14
15/*
16 * Parser Rules
17 */
18
19public
20compileUnit
21    :   EOF
22    ;
23
24// SET_DYNAMIC_SCOPE_ATTR
25
26setDynamicScopeAttr
27scope {int i;}
28	:	EOF {$setDynamicScopeAttr::i=3; $setDynamicScopeAttr[0]::i=3; $setDynamicScopeAttr[-0]::i=3;}
29	;
30
31// DYNAMIC_SCOPE_ATTR
32
33dynamicScopeAttr
34scope {int i;}
35	:	EOF {Console.WriteLine($dynamicScopeAttr::i);}
36	;
37
38// DYNAMIC_NEGATIVE_INDEXED_SCOPE_ATTR
39
40dynamicNegativeIndexedScopeAttr
41scope {int i;}
42	:	EOF {Console.WriteLine($dynamicNegativeIndexedScopeAttr[-1]::i);}
43	;
44
45// DYNAMIC_ABSOLUTE_INDEXED_SCOPE_ATTR
46
47dynamicAbsoluteIndexedScopeAttr
48scope {int i;}
49	:	EOF {Console.WriteLine($dynamicNegativeIndexedScopeAttr[0]::i);}
50	;
51
52// ISOLATED_DYNAMIC_SCOPE
53
54isolatedDynamicScope
55scope {int i;}
56	:	EOF {Console.WriteLine($isolatedDynamicScope.Count);}
57	;
58
59/*
60 * Lexer Rules
61 */
62
63WS
64    :   ' '
65    ;
66