class Regexp::Parser

def assign_referenced_expressions

the instance of Group::Capture that it refers to via its number.
an instance of Backreference::Number, its #referenced_expression is set to
Assigns referenced expressions to refering expressions, e.g. if there is
def assign_referenced_expressions
  # find all referencable and refering 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 refering 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