Class: Lrama::Grammar::ParameterizingRule::Rhs
- Inherits:
-
Object
- Object
- Lrama::Grammar::ParameterizingRule::Rhs
- Defined in:
- lib/lrama/grammar/parameterizing_rule/rhs.rb
Instance Attribute Summary collapse
-
#precedence_sym ⇒ Object
Returns the value of attribute precedence_sym.
-
#symbols ⇒ Object
Returns the value of attribute symbols.
-
#user_code ⇒ Object
Returns the value of attribute user_code.
Instance Method Summary collapse
-
#initialize ⇒ Rhs
constructor
A new instance of Rhs.
- #resolve_user_code(bindings) ⇒ Object
Constructor Details
#initialize ⇒ Rhs
Returns a new instance of Rhs.
9 10 11 12 13 |
# File 'lib/lrama/grammar/parameterizing_rule/rhs.rb', line 9 def initialize @symbols = [] @user_code = nil @precedence_sym = nil end |
Instance Attribute Details
#precedence_sym ⇒ Object
Returns the value of attribute precedence_sym.
7 8 9 |
# File 'lib/lrama/grammar/parameterizing_rule/rhs.rb', line 7 def precedence_sym @precedence_sym end |
#symbols ⇒ Object
Returns the value of attribute symbols.
7 8 9 |
# File 'lib/lrama/grammar/parameterizing_rule/rhs.rb', line 7 def symbols @symbols end |
#user_code ⇒ Object
Returns the value of attribute user_code.
7 8 9 |
# File 'lib/lrama/grammar/parameterizing_rule/rhs.rb', line 7 def user_code @user_code end |
Instance Method Details
#resolve_user_code(bindings) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/lrama/grammar/parameterizing_rule/rhs.rb', line 15 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 = {} #: Hash[String, String] 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| resolved.references.each do |ref| if ref.name == var ref.name = arg end end end return resolved end |