aboutsummaryrefslogtreecommitdiff
path: root/antlr-3.4/tool/src/main/resources/org/antlr/codegen/templates/Ruby/ASTParser.stg
blob: a79788fb3a001a67cbcb53e67974da3878cff6b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
gatedAction(block) ::= <<
<if(backtracking)>
if <actions.(actionScope).synpredgate>
  <block>
end
<else>
<block>
<endif>
>>

@ruleBody.setErrorReturnValue() ::= <<
return_value.tree = @adaptor.create_error_node( @input, return_value.start, @input.look(-1), re )<\n>
>>

tokenRef(token,label,elementIndex,terminalOptions) ::= <<
<super.tokenRef(...)>
<gatedAction({
tree_for_<label> = <createNodeFromToken(...)>
@adaptor.add_child( root_0, tree_for_<label> )
})>
>>

tokenRefBang(token,label,elementIndex,terminalOptions) ::= "<super.tokenRef(...)>"

tokenRefRuleRoot(token,label,elementIndex,terminalOptions) ::= <<
<super.tokenRef(...)>
<gatedAction({
tree_for_<label> = <createNodeFromToken(...)>
root_0 = @adaptor.become_root( tree_for_<label>, root_0 )
})>
>>

tokenRefBangAndListLabel(token,label,elementIndex,terminalOptions) ::= <<
<tokenRefBang(...)>
<addToList(elem={<label; format="label">},...)>
>>

tokenRefAndListLabel(token,label,elementIndex,terminalOptions) ::= <<
<tokenRef(...)>
<addToList(elem={<label; format="label">},...)>
>>

tokenRefRuleRootAndListLabel(token,label,terminalOptions,elementIndex) ::= <<
<tokenRefRuleRoot(...)>
<addToList(elem={<label; format="label">},...)>
>>

matchSet(s,label,terminalOptions,elementIndex,postmatchCode) ::= <<
<super.matchSet(postmatchCode={<gatedAction({@adaptor.add_child( root_0, <createNodeFromToken(...)> )})>}, ...)>
>>

matchRuleBlockSet(s,label,terminalOptions,elementIndex,postmatchCode,treeLevel="0") ::= <<
<matchSet(...)>
>>



matchSetBang(s,label,elementIndex,postmatchCode) ::= "<super.matchSet(...)>"
matchSetRuleRoot(s,label,terminalOptions,elementIndex,debug) ::= <<
<if(label)>
<label; format="label"> = @input.look<\n>
<endif>
<super.matchSet(postmatchCode={<gatedAction({root_0 = @adaptor.become_root( <createNodeFromToken(...)>, root_0 )})>}, ...)>
>>
matchSetRuleRootAndListLabel(s,label,terminalOptions,elementIndex,debug) ::= <<
<matchSetRuleRoot(...)>
<addToList(elem={<label; format="label">},...)>
>>



ruleRef(rule,label,elementIndex,args,scope) ::= <<
<super.ruleRef(...)>
<gatedAction({@adaptor.add_child( root_0, <label; format="label">.tree )})>
>>



ruleRefBang(rule,label,elementIndex,args,scope) ::= "<super.ruleRef(...)>"



ruleRefRuleRoot(rule,label,elementIndex,args,scope) ::= <<
<super.ruleRef(...)>
<gatedAction({root_0 = @adaptor.become_root( <label; format="label">.tree, root_0 )})>
>>



ruleRefAndListLabel(rule,label,elementIndex,args,scope) ::= <<
<ruleRef(...)>
<addToList(elem={<label; format="label">.tree},...)>
>>



ruleRefBangAndListLabel(rule,label,elementIndex,args,scope) ::= <<
<ruleRefBang(...)>
<addToList(elem={<label; format="label">.tree},...)>
>>



ruleRefRuleRootAndListLabel(rule,label,elementIndex,args,scope) ::= <<
<ruleRefRuleRoot(...)>
<addToList(elem={<label; format="label">.tree},...)>
>>

wildcard(token,label,elementIndex,terminalOptions) ::= <<
<super.wildcard(...)>
<gatedAction({
tree_for_<label> = @adaptor.create_with_payload( <label; format="label"> )
@adaptor.add_child( root_0, tree_for_<label> )
})>
>>

wildcardBang(token,label,elementIndex,terminalOptions) ::= "<super.wildcard(...)>"

wildcardRuleRoot(token,label,elementIndex,terminalOptions) ::= <<
<super.wildcard(...)>
<gatedAction({
tree_for_<label> = @adaptor.create_with_payload( <label; format="label"> )
root_0 = @adaptor.become_root( tree_for_<label>, root_0 )
})>
>>

createNodeFromToken(label,terminalOptions) ::= <<
<if(terminalOptions.node)>
<terminalOptions.node; format="constantPath">.new( <label; format="label"> )
<else>
@adaptor.create_with_payload( <label; format="label"> )
<endif>
>>

ruleCleanUp() ::= <<
<super.ruleCleanUp()>
<gatedAction({
return_value.tree = @adaptor.rule_post_processing( root_0 )
@adaptor.set_token_boundaries( return_value.tree, return_value.start, return_value.stop )
})>
>>