class Dentaku::AST::Negation

Attributes

node[R]

Public Class Methods

arity() click to toggle source
# File lib/dentaku/ast/negation.rb, line 27
def self.arity
  1
end
new(node) click to toggle source
# File lib/dentaku/ast/negation.rb, line 6
def initialize(node)
  @node = node

  unless valid_node?(node)
    raise NodeError.new(:numeric, node.type, :node),
          "#{self.class} requires numeric operands"
  end
end
precedence() click to toggle source
# File lib/dentaku/ast/negation.rb, line 35
def self.precedence
  40
end
right_associative?() click to toggle source
# File lib/dentaku/ast/negation.rb, line 31
def self.right_associative?
  true
end

Public Instance Methods

accept(visitor) click to toggle source
# File lib/dentaku/ast/negation.rb, line 43
def accept(visitor)
  visitor.visit_negation(self)
end
dependencies(context = {}) click to toggle source
# File lib/dentaku/ast/negation.rb, line 39
def dependencies(context = {})
  @node.dependencies(context)
end
operator() click to toggle source
# File lib/dentaku/ast/negation.rb, line 15
def operator
  :*
end
type() click to toggle source
# File lib/dentaku/ast/negation.rb, line 23
def type
  :numeric
end
value(context = {}) click to toggle source
# File lib/dentaku/ast/negation.rb, line 19
def value(context = {})
  cast(@node.value(context)) * -1
end

Private Instance Methods

valid_node?(node) click to toggle source
# File lib/dentaku/ast/negation.rb, line 49
def valid_node?(node)
  node && (node.dependencies.any? || node.type == :numeric)
end