Skip to content

Commit 18b86de

Browse files
committed
Add Evaluate method to all node types
1 parent 4169c16 commit 18b86de

File tree

10 files changed

+18
-4
lines changed

10 files changed

+18
-4
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class AndOperatorNode : OperatorNode
22
{
33
public AndOperatorNode(Node left, Node right) : base(left, right) { }
4+
5+
public override bool Evaluate() => Left.Evaluate() && Right!.Evaluate();
46
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class NandOperatorNode : OperatorNode
22
{
33
public NandOperatorNode(Node left, Node right) : base(left, right) { }
4+
5+
public override bool Evaluate() => !(Left.Evaluate() && Right!.Evaluate());
46
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
abstract class Node
22
{
3-
3+
public abstract bool Evaluate();
44
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class NorOperatorNode : OperatorNode
22
{
33
public NorOperatorNode(Node left, Node right) : base(left, right) { }
4+
5+
public override bool Evaluate() => !(Left.Evaluate() || Right!.Evaluate());
46
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class NotOperatorNode : OperatorNode
22
{
33
public NotOperatorNode(Node left) : base(left, null) { }
4+
5+
public override bool Evaluate() => !Left.Evaluate();
46
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class OrOperatorNode : OperatorNode
22
{
33
public OrOperatorNode(Node left, Node right) : base(left, right) { }
4+
5+
public override bool Evaluate() => Left.Evaluate() || Right!.Evaluate();
46
}

BooleanExpressionParser/Nodes/VariableNode.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ public VariableNode(String name)
77

88
public String Name { get; set; }
99
public bool Value { get; set; }
10+
11+
public override bool Evaluate() => Value;
1012
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class XnorOperatorNode : OperatorNode
22
{
33
public XnorOperatorNode(Node left, Node right) : base(left, right) { }
4+
5+
public override bool Evaluate() => Left.Evaluate() == Right!.Evaluate();
46
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class XorOperatorNode : OperatorNode
22
{
33
public XorOperatorNode(Node left, Node right) : base(left, right) { }
4+
5+
public override bool Evaluate() => Left.Evaluate() ^ Right!.Evaluate();
46
}

BooleanExpressionParser/Tokens/OperatorToken.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,5 @@ protected OperatorToken(int precedence)
55
Precedence = precedence;
66
}
77

8-
public int Precedence { get; protected set; }
9-
10-
8+
public int Precedence { get; protected set; }
119
}

0 commit comments

Comments
 (0)