public override Statement ParseStatement(IDocument document)
 {
     var lexer = new CSharpLexer(document.CreateReader());
     var result = Parser.Parse(lexer, Grammar.StatementRule);
     var statement = (Statement)result.Root.Result;
     return statement;
 }
 public override CompilationUnit Parse(IDocument document)
 {
     var lexer = new CSharpLexer(document.CreateReader());
     var result = Parser.Parse(lexer);
     var compilationUnit = (CompilationUnit) result.Root?.Result ?? new CompilationUnit();
     foreach (var error in result.SyntaxErrors)
         compilationUnit.Errors.Add(error);
     return compilationUnit;
 }