Class: ParseTreeWalker
Constant Summary collapse
- @@default =
ParseTreeWalker.DEFAULT = ParseTreeWalker()
nil
Class Method Summary collapse
Instance Method Summary collapse
-
#enterRule(listener, r) ⇒ Object
The discovery of a rule node, involves sending two events: the generic ParseTreeListener#enterEveryRule and a RuleContext-specific event.
- #exitRule(listener, r) ⇒ Object
- #walk(listener, t) ⇒ Object
Class Method Details
.DEFAULT ⇒ Object
167 168 169 170 171 172 |
# File 'lib/antlr4/tree/Tree.rb', line 167 def self.DEFAULT if @@default.nil? @@default = new end @@default end |
Instance Method Details
#enterRule(listener, r) ⇒ Object
The discovery of a rule node, involves sending two events: the generic ParseTreeListener#enterEveryRule and a RuleContext-specific event. First we trigger the generic and then the rule specific. We to them in reverse order upon finishing the node.
193 194 195 196 197 |
# File 'lib/antlr4/tree/Tree.rb', line 193 def enterRule(listener, r) ctx = r.getRuleContext() listener.enterEveryRule(ctx) ctx.enterRule(listener) end |
#exitRule(listener, r) ⇒ Object
199 200 201 202 203 |
# File 'lib/antlr4/tree/Tree.rb', line 199 def exitRule(listener, r) ctx = r.getRuleContext() ctx.exitRule(listener) listener.exitEveryRule(ctx) end |
#walk(listener, t) ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/antlr4/tree/Tree.rb', line 173 def walk(listener, t) if t.kind_of? ErrorNode then listener.visitErrorNode(t) return elsif t.kind_of? TerminalNode then listener.visitTerminal(t) return end self.enterRule(listener, t) for child in t.getChildren() self.walk(listener, child) end self.exitRule(listener, t) end |