Class: Astel::Dispatcher::Traversal
- Inherits:
-
Object
- Object
- Astel::Dispatcher::Traversal
- Defined in:
- lib/astel/dispatcher.rb
Overview
Each generated visit method pushes children in reverse order so the iterative traversal preserves Prism's pre-order without recursive calls.
Instance Method Summary collapse
-
#initialize(callbacks) ⇒ Traversal
constructor
A new instance of Traversal.
- #run(ast) ⇒ Object
Constructor Details
#initialize(callbacks) ⇒ Traversal
Returns a new instance of Traversal.
23 24 25 26 |
# File 'lib/astel/dispatcher.rb', line 23 def initialize(callbacks) @callbacks = callbacks @stack = [] end |
Instance Method Details
#run(ast) ⇒ Object
28 29 30 31 |
# File 'lib/astel/dispatcher.rb', line 28 def run(ast) @stack << ast @stack.pop.accept(self) until @stack.empty? end |