Skip to content

Commit 4169c16

Browse files
committed
Add single Evaluate method to Evaluator
1 parent 59c077a commit 4169c16

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

BooleanExpressionParser/Evaluator.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,19 @@ public List<bool[]> EvaluateAll()
1919
var binary = Convert.ToString(i, 2).PadLeft(Ast.Variables.Count, '0');
2020
var values = binary.Select(c => c == '1').ToArray();
2121

22-
var result = Evaluate(Ast.Root, values);
22+
var result = EvaluateNode(Ast.Root, values);
2323
table.Add(values.Append(result).ToArray());
2424
}
2525

2626
return table;
2727
}
2828

29-
private bool Evaluate(Node node, bool[] values)
29+
public bool Evaluate(bool[] values)
30+
{
31+
return EvaluateNode(Ast.Root, values);
32+
}
33+
34+
private bool EvaluateNode(Node node, bool[] values)
3035
{
3136
if (node is VariableNode var)
3237
{
@@ -35,11 +40,11 @@ private bool Evaluate(Node node, bool[] values)
3540
}
3641
else if (node is OperatorNode op)
3742
{
38-
var left = Evaluate(op.Left, values);
43+
var left = EvaluateNode(op.Left, values);
3944

4045
if (node is NotOperatorNode) return !left;
41-
42-
var right = Evaluate(op.Right!, values);
46+
47+
var right = EvaluateNode(op.Right!, values);
4348

4449
if (node is AndOperatorNode) return left && right;
4550
if (node is OrOperatorNode) return left || right;

0 commit comments

Comments
 (0)