예제 #1
0
파일: Parser.cs 프로젝트: Szune/EGScript
        /// <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);
        }
예제 #2
0
파일: Parser.cs 프로젝트: Szune/EGScript
        /// <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);
        }