Пример #1
0
        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);
        }
Пример #2
0
        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));
        }