Class: SimpleLogic::PrecedenceTable::Operator

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_logic/precedence_table.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(precedence, associativity, symbol) ⇒ Operator

Returns a new instance of Operator.



5
6
7
8
9
# File 'lib/simple_logic/precedence_table.rb', line 5

def initialize(precedence, associativity, symbol)
  @precedence = precedence
  @associativity = associativity
  @symbol = symbol
end

Instance Attribute Details

#associativityObject

Returns the value of attribute associativity.



4
5
6
# File 'lib/simple_logic/precedence_table.rb', line 4

def associativity
  @associativity
end

#precedenceObject

Returns the value of attribute precedence.



4
5
6
# File 'lib/simple_logic/precedence_table.rb', line 4

def precedence
  @precedence
end

#symbolObject

Returns the value of attribute symbol.



4
5
6
# File 'lib/simple_logic/precedence_table.rb', line 4

def symbol
  @symbol
end

Instance Method Details

#apply(l, r) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/simple_logic/precedence_table.rb', line 15

def apply(l, r)
  if @symbol == "&&"
    l && r
  elsif @symbol == "||"
    l || r
  else
    raise "Invalid operator: #{@symbol}"
  end
end

#left_associative?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/simple_logic/precedence_table.rb', line 11

def left_associative?
  @associativity == :left
end