Sha256: 3b6a3aacfb8b88bb2a2d49470a9dbe43e89085430da0cb36cc8f7b956380574d
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
module Ravensat class Node include Enumerable attr_reader :children def initialize @children = [] end def each yield(self) @children.each do |child| child.each {|c| yield(c)} end end def each_with_clause case self when AndNode, OrNode @children.first.each_with_clause{|c| yield(c)} yield(self) @children.last.each_with_clause{|c| yield(c)} when NotNode yield(self) @children.first.each_with_clause{|c| yield(c)} when VarNode yield(self) end end def &(object) AndNode.new(self, object) end def |(object) OrNode.new(self, object) end # def tree_text # self.each do |child| # child.to_s # end # end def to_s self.class.name end def cnf? @children.map(&:cnf?).reduce(:&) end def vars self.select{|node| node.is_a? VarNode}.uniq end def vars_size self.vars.size end def clauses_size self.count{|node| node.is_a? AndNode} + 1 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ravensat-0.3.0 | lib/ravensat/ast/node.rb |