Sha256: 7c145c720527f324ccb704c59a323087974fefcc4cd48c76e40261974b4a8ea0
Contents?: true
Size: 915 Bytes
Versions: 6
Compression:
Stored size: 915 Bytes
Contents
module Dentaku module AST class Negation < Arithmetic attr_reader :node def initialize(node) @node = node unless valid_node?(node) raise NodeError.new(:numeric, node.type, :node), "#{self.class} requires numeric operands" end end def operator :* end def value(context = {}) cast(@node.value(context)) * -1 end def type :numeric end def self.arity 1 end def self.right_associative? true end def self.precedence 40 end def dependencies(context = {}) @node.dependencies(context) end def accept(visitor) visitor.visit_negation(self) end private def valid_node?(node) node && (node.dependencies.any? || node.type == :numeric) end end end end
Version data entries
6 entries across 6 versions & 2 rubygems