master > master: codego methoden statt properties verwenden
This commit is contained in:
@@ -12,50 +12,49 @@ import (
|
||||
|
||||
func RekursivEval(tree syntaxbaum.SyntaxBaum, I []string) int {
|
||||
var children = tree.GetChildren()
|
||||
switch tree.Kind {
|
||||
case "atom", "generic":
|
||||
if tree.IsAtom() || tree.IsGeneric() {
|
||||
if utils.StrListContains(I, tree.Expr) {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
case "taut":
|
||||
} else if tree.IsTautologySymbol() {
|
||||
return 1
|
||||
case "contradiction":
|
||||
} else if tree.IsContradictionSymbol() {
|
||||
return 0
|
||||
case "not":
|
||||
} else if tree.IsNegation() {
|
||||
subtree0, _ := tree.GetChild()
|
||||
val0 := RekursivEval(subtree0, I)
|
||||
return 1 - val0
|
||||
case "and2":
|
||||
} else if tree.IsConjunction2() {
|
||||
val0 := RekursivEval(children[0], I)
|
||||
val1 := RekursivEval(children[1], I)
|
||||
return utils.Min2(val0, val1)
|
||||
case "and":
|
||||
} else if tree.IsConjunction() {
|
||||
var val = 1
|
||||
for _, subtree := range children {
|
||||
var val_ = RekursivEval(subtree, I)
|
||||
val = utils.Min2(val, val_)
|
||||
}
|
||||
return val
|
||||
case "or2":
|
||||
} else if tree.IsDisjunction2() {
|
||||
val0 := RekursivEval(children[0], I)
|
||||
val1 := RekursivEval(children[1], I)
|
||||
return utils.Max2(val0, val1)
|
||||
case "or":
|
||||
} else if tree.IsDisjunction() {
|
||||
var val = 0
|
||||
for _, subtree := range children {
|
||||
var val_ = RekursivEval(subtree, I)
|
||||
val = utils.Max2(val, val_)
|
||||
}
|
||||
return val
|
||||
case "implies":
|
||||
} else if tree.IsImplication() {
|
||||
val0 := RekursivEval(children[0], I)
|
||||
val1 := RekursivEval(children[1], I)
|
||||
if val0 <= val1 {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
default:
|
||||
} else {
|
||||
log.Fatal("Could not evaluate expression!")
|
||||
return 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user