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