/// <summary> /// <para>Handles *expression* "==" *expression</para> /// <para>*expression* "!=" *expression*</para> /// </summary> /// <returns></returns> private ASTExpressionBase ParseExpression4() { ASTExpressionBase expression = ParseExpression5(); while (Match(TokenType.EQUALS_EQUALS) || Match(TokenType.NOT_EQUALS)) { switch (_buffer[0].Type) { case TokenType.EQUALS_EQUALS: { Consume(); ASTExpressionBase expressionRight = ParseExpression5(); expression = new ASTCompare(ASTCompare.OperationType.EQUALS_EQUALS, expression, expressionRight); } break; case TokenType.NOT_EQUALS: { Consume(); ASTExpressionBase expressionRight = ParseExpression5(); expression = new ASTCompare(ASTCompare.OperationType.NOT_EQUALS, expression, expressionRight); } break; } } return(expression); }
/// <summary> /// Handles *expression* "&&" *expression* (and) /// </summary> /// <returns></returns> private ASTExpressionBase ParseExpression3() { ASTExpressionBase expression = ParseExpression4(); while (Match(TokenType.AND)) { Consume(); ASTExpressionBase expressionRight = ParseExpression4(); expression = new ASTCompare(ASTCompare.OperationType.AND, expression, expressionRight); } return(expression); }