Class: PEG::ReferenceResolver
- Inherits:
-
Object
- Object
- PEG::ReferenceResolver
- Defined in:
- lib/peg.rb
Instance Method Summary collapse
- #_resolve(rule) ⇒ Object
-
#initialize(rules) ⇒ ReferenceResolver
constructor
A new instance of ReferenceResolver.
- #resolve ⇒ Object
Constructor Details
#initialize(rules) ⇒ ReferenceResolver
Returns a new instance of ReferenceResolver.
379 380 381 382 |
# File 'lib/peg.rb', line 379 def initialize(rules) rules = rules.map {|rule| [rule.name, rule]} @rules = Hash[rules] end |
Instance Method Details
#_resolve(rule) ⇒ Object
389 390 391 392 393 394 395 396 397 398 399 400 |
# File 'lib/peg.rb', line 389 def _resolve(rule) if rule.class == Reference rule = @rules[rule.reference] _resolve(rule) else old_children = rule.children rule.children = [] # avoid infinite reqursion of _resolve new_children = old_children.map {|child| _resolve(child)} rule.children = new_children rule end end |
#resolve ⇒ Object
384 385 386 387 |
# File 'lib/peg.rb', line 384 def resolve name, rule = @rules.first _resolve(rule) end |