示例#1
0
        public Node ExprAdd()
        {
            var node = ExprMul();

            while (CurrentToken == TokenCategory.PLUS || CurrentToken == TokenCategory.MINUS)
            {
                if (CurrentToken == TokenCategory.MINUS)
                {
                    var node_minus = new Minus();
                    node_minus.AnchorToken = Expect(TokenCategory.MINUS);
                    node_minus.Add(node);
                    node_minus.Add(ExprMul());
                    node = node_minus;
                }
                else
                {
                    var node_plus = new Plus();
                    node_plus.AnchorToken = Expect(TokenCategory.PLUS);
                    node_plus.Add(node);
                    node_plus.Add(ExprMul());
                    node = node_plus;
                }
            }
            return(node);
        }