UNIXworkcode

1 --------- 2 VORHER 3 ---------- 4 5 rule(:varsigned => { :neg => subtree(:neg), :var =>subtree(:var) }) do 6 res = [] 7 temp = [] 8 if neg.to_s() == "!" 9 temp << -1 10 else 11 temp << 1 12 end 13 temp << var.to_s() 14 res << [temp] 15 res 16 end 17 rule(:and => { :left => subtree(:left), :right => subtree(:right) }) do 18 left + right 19 end 20 rule(:or => { :left => subtree(:left), :right => subtree(:right) }) do 21 res = [] 22 left.each do |l| 23 right.each do |r| 24 res << (l + r) 25 end 26 end 27 res 28 end 29 30 ------------- 31 NACHHER 32 ------------ 33 rule(:literal => { :neg => simple(:neg), :atom =>subtree(:atom) }) { 34 [[[if neg.to_s() == "!" then -1 else 1 end, atom]]] 35 } 36 rule(:and => {:left => subtree(:left), :right => subtree(:right)}) {left + right} 37 rule(:or => {:left => subtree(:left), :right => subtree(:right)}) { 38 left.reduce([]){|res,l| right.each{|r| res << (l+r)} ; res} 39 } 40