public override IDocumentNode VisitParse(DashParser.ParseContext context) { var node = new DocumentNode(); DashParser.DocumentTitleContext[] documentTitles = context.GetRuleContexts <DashParser.DocumentTitleContext>(); node.MainTitles.AddRange(documentTitles.Select(x => x.Accept(this)).Cast <LineNode>()); node.Children.AddRange(context.GetRules().Skip(documentTitles.Length).Select(x => x.Accept(this)).NotNulls().DumpCollectionNodes().TransformInlineMedia().Cast <DocumentNode.IChild>()); return(node); }
private IDocumentNode Convert(ICharStream inputStream) { var lexer = new DashLexer(inputStream); var tokens = new CommonTokenStream(lexer); var parser = new DashParser(tokens); DashParser.ParseContext context = parser.TwoStageParsing(x => x.parse()); return(Visit(context)); }