Class: Aurum::ParsingTableGenerator::PrecedenceTable
- Inherits:
-
Object
- Object
- Aurum::ParsingTableGenerator::PrecedenceTable
- Defined in:
- lib/aurum/parsing_table_generator.rb
Instance Method Summary collapse
- #compare(current, lookahead) ⇒ Object
-
#initialize(precedences, associativities) ⇒ PrecedenceTable
constructor
A new instance of PrecedenceTable.
- #operator?(symbol) ⇒ Boolean
Constructor Details
#initialize(precedences, associativities) ⇒ PrecedenceTable
Returns a new instance of PrecedenceTable.
360 361 362 363 364 365 366 367 |
# File 'lib/aurum/parsing_table_generator.rb', line 360 def initialize precedences, associativities @precedence_table, @associativities = {}, associativities precedences.reverse.each_with_index do |terminals, index| for terminal in terminals @precedence_table[terminal] = index end end end |
Instance Method Details
#compare(current, lookahead) ⇒ Object
373 374 375 376 377 378 379 |
# File 'lib/aurum/parsing_table_generator.rb', line 373 def compare current, lookahead if @precedence_table[current] == @precedence_table[lookahead] return (@associativities[:right].include?(current) && @associativities[:right].include?(lookahead)) ? -1 : 1 end @precedence_table[current] <=> @precedence_table[lookahead] end |
#operator?(symbol) ⇒ Boolean
369 370 371 |
# File 'lib/aurum/parsing_table_generator.rb', line 369 def operator? symbol @precedence_table.has_key? symbol end |