blob: 3eb92f8ef4e05ec315ce0d77fd16730192109e19 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
module Lrama
class Grammar
class ParameterizingRule
class Rhs
attr_accessor :symbols, :user_code, :precedence_sym
def initialize
@symbols = []
@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
end
|