Ejemplo n.º 1
0
 private static void DumpGrammar(GrammarInfo grammarInfo)
 {
     foreach (var rule in grammarInfo.Rules)
     {
         WriteVerbose();
         WriteVerbose(rule);
     }
 }
Ejemplo n.º 2
0
        static GrammarInfo ReadGrammarInfo(string grammarSpec)
        {
            ICharStream stream = new AntlrInputStream(grammarSpec);
            var         lexer  = new AntlrV4Tokens(stream);

            // Setup Parser
            var cts    = new CommonTokenStream(lexer);
            var parser = new AntlrV4Grammar(cts);

            var tree = parser.grammarSpec();

            var grammarInfo = new GrammarInfo(tree);

            return(grammarInfo);
        }
Ejemplo n.º 3
0
        static void WriteGeneratedFiles(string targetDirectory,
                                        string baseNamespace,
                                        TokenInfo tokenInfo,
                                        GrammarInfo grammarInfo)
        {
            var syntaxKindModel = new SyntaxKindEnumModel(
                @namespace: baseNamespace,
                tokenInfo: tokenInfo,
                grammarInfo: grammarInfo
                );
            var slotModels = new SlotModels(
                baseNamespace: baseNamespace,
                grammarInfo: grammarInfo
                );

            var tokenModel = new TokenModel(
                tokenInfo: tokenInfo,
                baseNamespace: baseNamespace);

            Console.WriteLine(targetDirectory);

            if (!Directory.Exists(targetDirectory))
            {
                Directory.CreateDirectory(targetDirectory);
            }

            var context = new CodeGeneratorContext();

            WriteSyntaxKind(targetDirectory, syntaxKindModel, context);
            WriteSyntaxSlots(targetDirectory, slotModels, context);
            WriteSyntaxNodes(targetDirectory, slotModels, context);
            WriteSyntaxSlotBuilder(targetDirectory, slotModels, context);
            WriteSyntaxVisitor(targetDirectory, slotModels, context);
            WriteSyntaxFactory(targetDirectory, slotModels, context);
            WriteSyntaxFacts(targetDirectory, tokenModel, context);
            WriteMetaModel(targetDirectory, slotModels, context);
        }