lib/lrama/grammar/parameterizing_rule/rhs.rb in lrama-0.6.9 vs lib/lrama/grammar/parameterizing_rule/rhs.rb in lrama-0.6.10
- old
+ new
@@ -1,5 +1,7 @@
+# frozen_string_literal: true
+
module Lrama
class Grammar
class ParameterizingRule
class Rhs
attr_accessor :symbols, :user_code, :precedence_sym
@@ -11,26 +13,27 @@
end
def resolve_user_code(bindings)
return unless user_code
+ resolved = Lexer::Token::UserCode.new(s_value: user_code.s_value, location: user_code.location)
var_to_arg = {}
symbols.each do |sym|
resolved_sym = bindings.resolve_symbol(sym)
if resolved_sym != sym
var_to_arg[sym.s_value] = resolved_sym.s_value
end
end
var_to_arg.each do |var, arg|
- user_code.references.each do |ref|
+ resolved.references.each do |ref|
if ref.name == var
ref.name = arg
end
end
end
- return user_code
+ return resolved
end
end
end
end
end