Example #1
0
        public void WhenTheInputSourceIsParsedWithTheBerpGrammarParserForTestParser()
        {
            var parser = new BerpGrammar.Parser();

            parser.StopAtFirstError = stopAtFirstError;
            try
            {
                ast = parser.Parse(new BerpGrammar.TokenScanner(new StringReader(sourceContent)), new TokenMatcher(), new AstBuilderForTest());
                Console.WriteLine(ast);
            }
            catch (CompositeParserException parserEx)
            {
                parsingError = parserEx;
                Console.WriteLine(parsingError.GetErrorMessage());
            }
            catch (ParserException ex)
            {
                parsingError = new CompositeParserException(new [] { ex });
                Console.WriteLine(parsingError.GetErrorMessage());
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("unhandled parsing error", ex);
            }
        }
        public void CompositeParserExceptionShouldBeSerializable()
        {
            var exception = new CompositeParserException(new ParserException[]
            {
                new AstBuilderException("sample message", new Location(1, 2)), new NoSuchLanguageException("sample message")
            });

            var deserializedException = SerializeDeserialize(exception);

            Assert.AreEqual(exception.Message, deserializedException.Message);

            // the custom details are not serialized (yet?)
            Assert.IsNotNull(deserializedException.Errors);
            Assert.AreEqual(exception.Errors.Count(), deserializedException.Errors.Count());
            Assert.IsInstanceOf <AstBuilderException>(exception.Errors.First());
            Assert.IsInstanceOf <NoSuchLanguageException>(exception.Errors.Last());
        }
Example #3
0
        private void ParseWithErrorHandling(Action <Parser> doParsing, IAstBuilder <RuleSet> astBuilder = null)
        {
            var parser = astBuilder == null ? new Parser() : new Parser(astBuilder);

            parser.StopAtFirstError = stopAtFirstError;
            try
            {
                doParsing(parser);
            }
            catch (CompositeParserException parserEx)
            {
                parsingError = parserEx;
                Console.WriteLine(parsingError.GetErrorMessage());
            }
            catch (ParserException ex)
            {
                parsingError = new CompositeParserException(new[] { ex });
                Console.WriteLine(parsingError.GetErrorMessage());
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("unhandled parsing error", ex);
            }
        }
Example #4
0
 public void WhenTheInputSourceIsParsedWithTheBerpGrammarParserForTestParser()
 {
     var parser = new BerpGrammar.Parser();
     parser.StopAtFirstError = stopAtFirstError;
     try
     {
         ast = parser.Parse(new BerpGrammar.TokenScanner(new StringReader(sourceContent)), new TokenMatcher(), new AstBuilderForTest());
         Console.WriteLine(ast);
     }
     catch (CompositeParserException parserEx)
     {
         parsingError = parserEx;
         Console.WriteLine(parsingError.GetErrorMessage());
     }
     catch (ParserException ex)
     {
         parsingError = new CompositeParserException(new []{ ex });
         Console.WriteLine(parsingError.GetErrorMessage());
     }
     catch (Exception ex)
     {
         throw new InvalidOperationException("unhandled parsing error", ex);
     }
 }