public static string GenerateSyntaxKindEnum(SyntaxKindEnumModel model, CodeGeneratorContext context) { var template = GetTemplate(SyntaxKindEnumTemplateGroup.Value, model, context); var content = template.Render(); return(content); }
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); }
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); }