public override ConstraintViolation VisitUnaryOperatorNode(UnaryOperatorNode unNode) { if (unNode.Operator.Value == "~") { var operand = unNode.Operand as UnaryOperatorNode; if (operand != null && operand.Operator.Value == "~") { return new ConstraintViolation(unNode, "The 'not' operator may not be applied directly to the result of another 'not' operator."); } } return null; }
public override ConstraintViolation VisitUnaryOperatorNode(UnaryOperatorNode unNode) { return null; }
private Nodes.ParseTreeNode ParseNotExpression(IEnumerator<Token> tokenStream) { if (tokenStream.Current.TokenType == TokenType.UnaryOperator && tokenStream.Current.Value == "~") { var notNode = new Nodes.UnaryOperatorNode(); notNode.Operator = tokenStream.Current; tokenStream.MoveNext(); notNode.Operand = this.ParseNotExpression(tokenStream); return notNode; } else { return this.ParseParenExpression(tokenStream); } }
public abstract ConstraintViolation VisitUnaryOperatorNode(UnaryOperatorNode unNode);