private IAstNode E0()
        {
            IAstNode expr = E1();

            if (expr != null)
            {
                while ((LookToken().Type == TokenType.Op && LookToken().Data == "<") ||
                       (LookToken().Type == TokenType.Op && LookToken().Data == ">") ||
                       (LookToken().Type == TokenType.Op && LookToken().Data == ">=") ||
                       (LookToken().Type == TokenType.Op && LookToken().Data == "<=") ||
                       (LookToken().Type == TokenType.Op && LookToken().Data == "==") ||
                       (LookToken().Type == TokenType.Op && LookToken().Data == "!="))
                {
                    Token     token = GetToken();
                    AstOpNode op    = new AstOpNode(token.Data)
                    {
                        LNode = expr,
                        RNode = E1()
                    };
                    expr = op;
                }
            }

            return(expr);
        }
        private IAstNode NotExpr()
        {
            int   oldPos = _pos;
            Token token  = GetToken();

            if (token.Type == TokenType.Op && token.Data == "!")
            {
                AstOpNode expr = new AstOpNode(token.Data);
                expr.LNode = E_1();
                return(expr);
            }
            _pos = oldPos;
            return(null);
        }
Ejemplo n.º 3
0
        private IAstNode E3()
        {
            IAstNode expr = E4();

            if (expr != null)
            {
                while ((LookToken().Type == TokenType.Op && LookToken().Data == "^"))
                {
                    Token     token = GetToken();
                    AstOpNode op    = new AstOpNode(token.Data)
                    {
                        LNode = expr,
                        RNode = E4()
                    };
                    if (op.RNode != null)
                    {
                        expr = op;
                    }
                }
            }

            return(expr);
        }