class Regexp::Parser
def assign_referenced_expressions
an instance of Backreference::Number, its #referenced_expression is set to
Assigns referenced expressions to referring expressions, e.g. if there is
def assign_referenced_expressions # find all referenceable and referring expressions targets = { 0 => root } referrers = [] root.each_expression do |exp| exp.is_a?(Group::Capture) && targets[exp.identifier] = exp referrers << exp if exp.referential? end # assign reference expression to referring expressions # (in a second iteration because there might be forward references) referrers.each do |exp| exp.referenced_expression = targets[exp.reference] || raise(ParserError, "Invalid reference #{exp.reference} at pos #{exp.ts}") end end