Example #1
0
        private Exp ParseExp()
        {
            var term = ParseFactor();

            while (PeekAndDiscard(TokenType.Minus))
            {
                var term2 = ParseFactor();
                term = new BinExp(TokenType.Minus, term, term2);
            }
            return(term);
        }
Example #2
0
        public Exp ParseExp()
        {
            var term = ParseTerm();

            for (; ;)
            {
                var type = lexer.Peek().Type;
                switch (type)
                {
                case TokenType.Plus: break;

                case TokenType.Minus: break;

                default: return(term);
                }
                lexer.Read();
                var term2 = ParseTerm();
                term = new BinExp(type, term, term2);
            }
        }
Example #3
0
        private Exp ParseTerm()
        {
            var factor = ParseFactor();

            for (; ;)
            {
                var opType = lexer.Peek().Type;
                switch (opType)
                {
                case TokenType.Star:
                case TokenType.Slash:
                    break;

                default:
                    return(factor);
                }
                lexer.Read();
                var factor2 = ParseFactor();
                factor = new BinExp(opType, factor, factor2);
            }
        }