Пример #1
0
        public void SwapTakesPositionFromOtherTokenKeeper()
        {
            //Arrange
            var other = new TokenKeeper(_keeper);

            other.Take();

            //Act
            _keeper.Swap(other);

            //Assert
            _keeper.IsNext(TokenType.NumericLiteral).Should().BeTrue();
        }
Пример #2
0
        private static bool TryTakeOperatorExp(TokenKeeper pos, out ExpressionNode node)
        {
            var work = new TokenKeeper(pos);

            if (TryTakeTerm(work, out var left) &&
                TryTakeOperator(work, out var op) &&
                TryTakeSecondTerm(work, out var right))
            {
                node = new OperatorExpNode(left, op, right);
                pos.Swap(work);
                return(true);
            }

            node = null;
            return(false);
        }
Пример #3
0
        private static bool TryTakeParensExp(TokenKeeper pos, out ExpressionNode node)
        {
            var work = new TokenKeeper(pos);

            if (TryTakeOpenParens(work) &&
                TryTakeCalcExp(work, out var calc) &&
                TryTakeCloseParens(work))
            {
                node = new ParensExpressionNode(calc);
                pos.Swap(work);
                return(true);
            }

            node = null;
            return(false);
        }