Class: ParseTreeWalker

Inherits:
Object show all
Defined in:
lib/antlr4/tree/Tree.rb

Constant Summary collapse

@@default =

ParseTreeWalker.DEFAULT = ParseTreeWalker()

nil

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.DEFAULTObject



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