private static void CompileFile(Stream fileStream, string fileName, StreamWriter outStream, TypeStorage typeStorage, ILogger logger, ILogger treeLogger, INameConvertor nameConvertor) { logger.Log(String.Format("----Файл {0}----", fileName)); var stream = new ANTLRInputStream(fileStream); var lexer = new PlsqlLexer(stream); var parser = new PlsqlParser(new CommonTokenStream(lexer)); var tree = parser.program().Tree as CommonTree; if (treeLogger != null) { treeLogger.Log(ASTPrinter.Print(tree)); } var semanticAnalyser = new SemanticAnalyser(typeStorage, logger); bool res = semanticAnalyser.Check(tree); if (res) { var optimizer = new Optimizer(); optimizer.Optimize(tree); var codegenerator = new Codegenerator(nameConvertor); string code = codegenerator.Generate(tree, typeStorage); outStream.Write(code); } logger.Log(string.Format("--------", fileName)); }
public ConstCodeGenerator(INameConvertor nameConvertor, IValueConvertor valueConvertor) { _typeHelper = new TypeHelper(); _valueConvertor = valueConvertor; _nameConvertor = nameConvertor; }
public ClassBuilder(ClassType classType, INameConvertor nameConvertor) { ClassType = classType; this.nameConvertor = nameConvertor; Build(classType); BuildConstructor(); }
public MethodBuilder(MethodInfo methodInfo, bool isEntryPoint, INameConvertor nameConvertor) : base(nameConvertor) { this.MethodInfo = methodInfo; template.Replace("{__entryPoint}", isEntryPoint? ".entrypoint" : ""); Build(methodInfo); }
public CodeGeneratorFactory(INameConvertor nameConvertor, IValueConvertor valueConvertor) { _valueConvertor = valueConvertor; _nameConvertor = nameConvertor; _typeCodeGenerators = new Dictionary <OutputType, ICodeGenerator>(); _typeCodeGenerators[OutputType.Enum] = new EnumCodeGenerator(_nameConvertor); _typeCodeGenerators[OutputType.Interface] = new InterfaceCodeGenerator(_nameConvertor); _typeCodeGenerators[OutputType.Class] = new ClassCodeGenerator(_nameConvertor, _valueConvertor); _typeCodeGenerators[OutputType.Const] = new ConstCodeGenerator(_nameConvertor, _valueConvertor); }
public string Generate(CommonTree tree, TypeStorage types, INameConvertor nameConvertor) { this.types = types; typeBuilder = new TypesBuilder(types); builder = new ModuleBuilder(types.Libs, nameConvertor); var defs = tree.Children.Where(x => x is ClassDefNode || x is EntryPointNode); var context = new CodegenContext(); foreach (dynamic item in defs) { Visit(item, context); } return(builder.Generate()); }
public ValueConvertor(IEnumerable <TypeDefinition> typeDefinitions, INameConvertor nameConvertor) { _nameConvertor = nameConvertor; _typeDictionary = typeDefinitions.ToDictionary(x => x.Type, x => x); }
public PackageBuilder(PackageType packageType, INameConvertor nameConvertor) : base(packageType, nameConvertor) { template.Replace("{__innerTypes}", GetInnerTypes(packageType)); }
public EnumCodeGenerator(INameConvertor nameConvertor) { _nameConvertor = nameConvertor; }
public MethodBuilder(MethodInfo methodInfo, INameConvertor nameConvertor) : this(methodInfo, false, nameConvertor) { }
public ModuleBuilder(List <LibraryInfo> libs, INameConvertor nameConvertor) { BuildAssemblies(libs); this.nameConvertor = nameConvertor; }
public InterfaceCodeGenerator(INameConvertor nameConvertor) { _typeHelper = new TypeHelper(); _nameConvertor = nameConvertor; }
public ConstructorBuilder(ConstructorInfo type, INameConvertor nameConvertor) : base(type, nameConvertor) { Fill(type); }
public EntryPointBuilder(MethodInfo methodInfo, INameConvertor nameConvertor) : base(methodInfo, true, nameConvertor) { }
public CommandBuilder(INameConvertor nameConvertor) { commandNames = CommandNames.Instance; this.nameConvertor = nameConvertor; }
public Codegenerator(INameConvertor nameConvertor) { passes.Add(new AssignPass()); this.nameConvertor = nameConvertor; }
private string Generate(CommonTree tree, INameConvertor nameConvertor, TypeStorage types) { var codegenerator = new Codegenerator(nameConvertor); return(codegenerator.Generate(tree, types)); }