コード例 #1
0
        public void TakeReturnsTheFirstToken()
        {
            //Act
            var result = _keeper.Take();

            //Assert
            result.TokenType.Should().Be(TokenType.OpenParens);
        }
コード例 #2
0
        private static bool TryTakeCloseParens(TokenKeeper pos)
        {
            if (pos.Next.TokenType == TokenType.CloseParens)
            {
                pos.Take();
                return(true);
            }

            return(false);
        }
コード例 #3
0
        private static bool TryTakeToken(TokenType tokenType, TokenKeeper pos)
        {
            if (pos.Next.TokenType == tokenType)
            {
                pos.Take();
                return(true);
            }

            return(false);
        }
コード例 #4
0
        private static bool TryTakeOperator(TokenKeeper pos, out OperatorToken op)
        {
            if (pos.Next.TokenType == TokenType.Operator)
            {
                op = pos.Take() as OperatorToken;
                return(true);
            }

            op = null;
            return(false);
        }
コード例 #5
0
        private static bool TryTakeNumericLiteral(TokenKeeper pos, out ExpressionNode node)
        {
            if (pos.Next.TokenType == TokenType.NumericLiteral)
            {
                node = new NumericLiteralNode(pos.Take());
                return(true);
            }

            node = null;
            return(false);
        }
コード例 #6
0
        public void SwapExchangesPositionWithOtherTokenKeeper()
        {
            //Arrange
            var other = new TokenKeeper(_keeper);

            other.Take();

            //Act
            _keeper.Swap(other);

            //Assert
            other.IsNext(TokenType.OpenParens).Should().BeTrue();
        }
コード例 #7
0
        public void SwapTakesPositionFromOtherTokenKeeper()
        {
            //Arrange
            var other = new TokenKeeper(_keeper);

            other.Take();

            //Act
            _keeper.Swap(other);

            //Assert
            _keeper.IsNext(TokenType.NumericLiteral).Should().BeTrue();
        }
コード例 #8
0
        public void DiscardWhileShouldConsumeAllMatchingTokens()
        {
            //Arrange
            var original = new TokenKeeper(_keeper);

            //Act
            _keeper.DiscardWhile(TokenType.OpenParens, TokenType.NumericLiteral, TokenType.Operator);

            //Assert
            while (original.Next.TokenType != TokenType.CloseParens)
            {
                original.Take();
            }

            var remaining = _keeper.RemainingData();

            remaining.Should().Be(original.RemainingData());
        }