Example #1
0
 /* shift-expression-p:
  | expression-shift-operator additive-expression shift-expression-p
  | EPSILON */
 private ExpressionNode shift_expression_p(ExpressionNode leftExpression)
 {
     printIfDebug("shift_expression_p");
     if (pass(shiftOperatorOptions))
     {
         Token shiftOperator = token;
         consumeToken();
         var            additiveExpression = additive_expression();
         ExpressionNode resultExpression   = null;
         if (shiftOperator.type == TokenType.OP_SHIFT_LEFT)
         {
             resultExpression = new ShiftLeftNode(leftExpression, additiveExpression, shiftOperator);
         }
         else
         {
             resultExpression = new ShiftRightNode(leftExpression, additiveExpression, shiftOperator);
         }
         return(shift_expression_p(resultExpression));
     }
     else
     {
         return(leftExpression);
     }
 }
Example #2
0
        private Node ParseShift()
        {
            var lNode = this.ParseAdditive();

            while (this.AreMoreTokens)
            {
                if (this.currentToken.Equals(TokenType.Symbol, "<<"))
                {
                    this.ReadNextToken();
                    lNode = new ShiftLeftNode(lNode, this.ParseAdditive());
                }
                else if (this.currentToken.Equals(TokenType.Symbol, ">>"))
                {
                    this.ReadNextToken();
                    lNode = new ShiftRightNode(lNode, this.ParseAdditive());
                }
                else
                {
                    break;
                }
            }

            return(lNode);
        }
Example #3
0
        private Node ParseShift()
        {
            var lNode = this.ParseAdditive();

            while (this.AreMoreTokens)
            {
                if (this.currentToken.Equals(TokenType.Symbol, "<<"))
                {
                    this.ReadNextToken();
                    lNode = new ShiftLeftNode(lNode, this.ParseAdditive());
                }
                else if (this.currentToken.Equals(TokenType.Symbol, ">>"))
                {
                    this.ReadNextToken();
                    lNode = new ShiftRightNode(lNode, this.ParseAdditive());
                }
                else
                {
                    break;
                }
            }

            return lNode;
        }