Class: Aurum::ParsingTableGenerator::PrecedenceTable

Inherits:
Object
  • Object
show all
Defined in:
lib/aurum/parsing_table_generator.rb

Instance Method Summary collapse

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

Returns:

  • (Boolean)


369
370
371
# File 'lib/aurum/parsing_table_generator.rb', line 369

def operator? symbol
    @precedence_table.has_key? symbol
end