diff options
author | yui-knk <spiketeika@gmail.com> | 2024-05-02 12:17:18 +0900 |
---|---|---|
committer | Yuichiro Kaneko <spiketeika@gmail.com> | 2024-05-02 13:32:04 +0900 |
commit | fcd89bf6682a4f488714c9e9ffe3e3d7957a72c9 (patch) | |
tree | 33f0acebba423b81c1d50ae5df18b59a81708184 /tool/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb | |
parent | d22dfce1cc5e5425e062dc7883b522ef85fe06db (diff) |
Lrama v0.6.9
Diffstat (limited to 'tool/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb')
-rw-r--r-- | tool/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tool/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb b/tool/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb index 7f50be873c..3eb92f8ef4 100644 --- a/tool/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb +++ b/tool/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb @@ -9,6 +9,28 @@ module Lrama @user_code = nil @precedence_sym = nil end + + def resolve_user_code(bindings) + return unless user_code + + 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| + if ref.name == var + ref.name = arg + end + end + end + + return user_code + end end end end |