コード例 #1
0
        static void Main(string[] args)
        {
            var tokenMapper = new ExpressionTokenMapper();
            var tokenizer   = new ExpressionTokenizer(tokenMapper);

            var parser = new ExpressionParser(tokenizer);

            while (true)
            {
                var line = Console.ReadLine();
                try
                {
                    bool ret = parser.ParseExpression(line);
                    Console.WriteLine("Expression is valid.");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
コード例 #2
0
        static void Main(string[] args)
        {
            var tokenMapper = new ExpressionTokenMapper();
            var tokenizer   = new ExpressionTokenizer(tokenMapper);

            var parser = new ExpressionParser(tokenizer);

            while (true)
            {
                var line = Console.ReadLine();
                try
                {
                    bool ret = parser.ParseExpression(line);
                    Console.WriteLine("Expression is valid...");
                }
                catch (ParseException ex)
                {
                    if (ex.Reason == EExceptionReason.UnmatchedError)
                    {
                        Console.WriteLine($"Parse error at position {ex.Position}: Unmatched \"{ex.Token}\" in expression.");
                    }
                    else if (ex.Reason == EExceptionReason.StartExpressionError)
                    {
                        Console.WriteLine($"Parse error at position {ex.Position}: An expression must start with a digit or a \"(\".");
                    }
                }
                catch (InvalidTokenException ex)
                {
                    var message = $"Unexpected input after \"{ex.TokenData}\" at position {ex.Position}: "
                                  + $"expected: \")\",\"+\",\"-\",\"*\",\"/\" or end of expression, but found \"{ex.PeekedData}\".";
                    Console.WriteLine(message);
                }
                catch (TokenizationException ex)
                {
                    Console.WriteLine($"Error at position {ex.CharacterIndex}: \"{ex.Input}\" is not a valid input.");
                }
            }
        }