class Keisan::AST::UnaryLogicalNot
Public Class Methods
symbol()
click to toggle source
# File lib/keisan/ast/unary_logical_not.rb, line 8 def self.symbol :"!" end
Public Instance Methods
evaluate(context = nil)
click to toggle source
Calls superclass method
# File lib/keisan/ast/unary_logical_not.rb, line 12 def evaluate(context = nil) context ||= Context.new node = child.evaluate(context).to_node case node when AST::Boolean AST::Boolean.new(!node.value) else if node.is_constant? raise Keisan::Exceptions::InvalidFunctionError.new("Cannot take unary logical not of non-boolean constant") else super end end end
simplify(context = nil)
click to toggle source
Calls superclass method
# File lib/keisan/ast/unary_logical_not.rb, line 27 def simplify(context = nil) context ||= Context.new node = child.simplify(context).to_node case node when AST::Boolean AST::Boolean.new(!node.value) else super end end
value(context = nil)
click to toggle source
# File lib/keisan/ast/unary_logical_not.rb, line 4 def value(context = nil) return !child.value(context) end