Esempio n. 1
0
        //<expr-rel>//
        public Node ExprRel()
        {
            var addOne = ExprAdd();
            var xprRel = addOne;

            while (firstOfExprRel.Contains(CurrentToken))
            {
                switch (CurrentToken)
                {
                case TokenCategory.LESS_THAN:
                    xprRel = new LessThan()
                    {
                        AnchorToken = Expect(TokenCategory.LESS_THAN)
                    };
                    break;

                case TokenCategory.LESS_THAN_OR_EQUAL_TO:
                    xprRel = new LessThanOrEqual()
                    {
                        AnchorToken = Expect(TokenCategory.LESS_THAN_OR_EQUAL_TO)
                    };
                    break;

                case TokenCategory.GREATER_THAN:
                    xprRel = new GreaterThan()
                    {
                        AnchorToken = Expect(TokenCategory.GREATER_THAN)
                    };
                    break;

                case TokenCategory.GREATER_THAN_OR_EQUAL_TO:
                    xprRel = new GreaterThanOrEqual()
                    {
                        AnchorToken = Expect(TokenCategory.GREATER_THAN_OR_EQUAL_TO)
                    };
                    break;

                default:
                    throw new SyntaxError(firstOfExprRel,
                                          tokenStream.Current);
                }
                xprRel.Add(addOne);
                xprRel.Add(ExprAdd());
                addOne = xprRel;
            }
            return(xprRel);
        }