Beispiel #1
0
        public new static Expression Parse(TokenParser p)
        {
            Expression v1 = Mul.Parse(p);

            if (v1 == null)
            {
                return(null);
            }

            Expression v2;
            Token      t = p.PeekNext();

            if (t == null)
            {
                return(v1);
            }

            switch (t.Type)
            {
            case TokenType.OperatorAdd:
                p.CommitPeek();
                v2 = Parse(p);
                if (v2 == null)
                {
                    return(null);
                }
                return(new A(v1, v2));

            case TokenType.OperatorSub:
                p.CommitPeek();
                v2 = Parse(p);
                if (v2 == null)
                {
                    return(null);
                }
                return(new S(v1, v2));
            }

            return(v1);
        }
Beispiel #2
0
        public new static Expression Parse(TokenParser p)
        {
            Value v1 = Value.Parse(p);

            if (v1 == null)
            {
                return(null);
            }

            Expression v2;
            Token      t = p.PeekNext();

            if (t == null)
            {
                return(v1);
            }

            switch (t.Type)
            {
            case TokenType.OperatorMul:
                p.CommitPeek();
                v2 = Parse(p);
                if (v2 == null)
                {
                    return(null);
                }
                return(new M(v1, v2));

            case TokenType.OperatorDiv:
                p.CommitPeek();
                v2 = Parse(p);
                if (v2 == null)
                {
                    return(null);
                }
                return(new D(v1, v2));
            }

            return(v1);
        }