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()); }
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); } }
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); } }