Class: Lrama::Grammar::Parameterized::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/lrama/grammar/parameterized/resolver.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeResolver

Returns a new instance of Resolver.



12
13
14
15
# File 'lib/lrama/grammar/parameterized/resolver.rb', line 12

def initialize
  @rules = []
  @created_lhs_list = []
end

Instance Attribute Details

#created_lhs_listObject

: Array



9
10
11
# File 'lib/lrama/grammar/parameterized/resolver.rb', line 9

def created_lhs_list
  @created_lhs_list
end

#rulesObject

: Array



8
9
10
# File 'lib/lrama/grammar/parameterized/resolver.rb', line 8

def rules
  @rules
end

Instance Method Details

#add_rule(rule) ⇒ Object



18
19
20
# File 'lib/lrama/grammar/parameterized/resolver.rb', line 18

def add_rule(rule)
  @rules << rule
end

#created_lhs(lhs_s_value) ⇒ Object



33
34
35
# File 'lib/lrama/grammar/parameterized/resolver.rb', line 33

def created_lhs(lhs_s_value)
  @created_lhs_list.reverse.find { |created_lhs| created_lhs.s_value == lhs_s_value }
end

#find_inline(token) ⇒ Object



28
29
30
# File 'lib/lrama/grammar/parameterized/resolver.rb', line 28

def find_inline(token)
  @rules.reverse.find { |rule| rule.name == token.s_value && rule.inline? }
end

#find_rule(token) ⇒ Object



23
24
25
# File 'lib/lrama/grammar/parameterized/resolver.rb', line 23

def find_rule(token)
  select_rules(@rules, token).last
end

#redefined_rulesObject



38
39
40
# File 'lib/lrama/grammar/parameterized/resolver.rb', line 38

def redefined_rules
  @rules.select { |rule| @rules.count { |r| r.name == rule.name && r.required_parameters_count == rule.required_parameters_count } > 1 }
end