public static string GenerateSyntaxKindEnum(SyntaxKindEnumModel model, CodeGeneratorContext context)
        {
            var template = GetTemplate(SyntaxKindEnumTemplateGroup.Value, model, context);
            var content  = template.Render();

            return(content);
        }
Beispiel #2
0
        private static void WriteSyntaxKind(string targetDirectory,
                                            SyntaxKindEnumModel model,
                                            CodeGeneratorContext context)
        {
            var content  = CodeGenerator.GenerateSyntaxKindEnum(model, context);
            var fullname = Path.Combine(targetDirectory, "SyntaxKind.generated.cs");

            File.WriteAllText(fullname, content, Encoding.UTF8);
        }
Beispiel #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);
        }