Пример #1
0
        public void TokensAreExtracted()
        {
            //Arrange
            var testStrings = new [] {
                "100",
                "100+",
                "100 ",
                "100L",
                "+-*/",
                "()",
                "",
                null,
                "(3 *5)+  49"
            };

            var output = new Output();

            //Act
            foreach (var testString in testStrings)
            {
                var result = LexicalAnalyser.ExtractTokens(testString);

                output.WrapLine($@"Analysis of ""{testString ?? "NULL"}"":");
                output.FormatTable(result.AsReport(rep => rep
                                                   .AddColumn(r => r.TokenType, cc => cc.LeftAlign())
                                                   .AddColumn(r => r.Text, cc => {}))
                                   );

                output.WriteLine();
                output.WriteLine();
            }

            //Assert
            output.Report.Verify();
        }
Пример #2
0
        public static ArithmeticExpression Parse(string input)
        {
            var tokens = LexicalAnalyser.ExtractTokens(input ?? string.Empty);
            var pos    = new TokenKeeper(tokens);

            if (TryTakeCalc(pos, out var calculation) && pos.Finished)
            {
                return(new ArithmeticExpression(calculation));
            }
            else
            {
                var errorMessage = $"Unable to interpret calculation at \"{pos.RemainingData()}\"";
                return(new ArithmeticExpression(errorMessage));
            }
        }
Пример #3
0
 public TestTokenKeeper()
 {
     _tokens = LexicalAnalyser.ExtractTokens(TestExpression).ToList();
     _keeper = new TokenKeeper(_tokens);
 }