public override void GenerateCode(int level, CGenerator generator) { // macros are not indented at all generator.OutputStream.Write("#define " + this.Name + " "); generator.WriteMultilineString(this.Value); generator.WriteNewLine(); }
private void btn_Line_Click(object sender, RoutedEventArgs e) { Points = CGenerator.Points(10, 0, 600, 0, 400); GLines = Points.ToLines(GeometryEngine.GCanvas); GeometryEngine.Shapes["Lines"].AddRange((List <GLine>)GLines); GeometryEngine.Render("Lines"); }
Generator CreateGenerator() { Generator generator = null; switch (Options.GeneratorKind) { case GeneratorKind.C: generator = new CGenerator(Context); break; case GeneratorKind.ObjectiveC: generator = new ObjCGenerator(Context); break; case GeneratorKind.Java: generator = new JavaGenerator(Context); break; case GeneratorKind.Swift: generator = new SwiftGenerator(Context); break; default: throw new NotImplementedException(); } return(generator); }
private void btn_point_Click(object sender, RoutedEventArgs e) { Points = CGenerator.Points(10, 0, 600, 0, 400); var circles = Points.ToCircles(GeometryEngine.GCanvas); GeometryEngine.Shapes["Points"].AddRange(circles); GeometryEngine.Render("Points"); }
public override void GenerateCode(int level, CGenerator generator) { uint c = this.Count; while (c > 0) { generator.WriteNewLine(); c--; } }
void CreateTypedefObjectForClass(Class @class) { var typedef = new TypedefDecl { Name = CGenerator.QualifiedName(@class), Namespace = TranslationUnit, QualifiedType = new QualifiedType(new TagType(MonoEmbedObject)) }; Typedefs.Add(typedef); }
public void Save(CGenerator cGenerator) { CFile cFile = new CFile(); cFile.AddElement(new Comment("Generated by LwipMibCompiler")); cFile.AddElement(EmptyLine.SingleLine); string headerDefine = cGenerator.FileName; headerDefine = new Regex("[^a-zA-Z0-9]").Replace(headerDefine, "_"); headerDefine = headerDefine.ToUpperInvariant(); CodeContainerBase e = cFile.AddElement(new PP_Ifdef(headerDefine, inverted: true)) as CodeContainerBase; e.AddElement(new PP_Macro(headerDefine, headerDefine)); e.AddElement(EmptyLine.SingleLine); e.AddElement(new PP_Include(LwipDefs.Incl_SnmpOpts)); e = e.AddElement(new PP_If(LwipDefs.Opt_SnmpEnabled)) as CodeContainerBase; e.AddElement(EmptyLine.SingleLine); CodeContainerBase cplusplusopen = e.AddElement(new PP_Ifdef("__cplusplus")) as CodeContainerBase; cplusplusopen.AddElement(new Code("extern \"C\" {")); e.AddElement(EmptyLine.SingleLine); if (this.includes.Count > 0) { e.AddElements(this.includes); e.AddElement(EmptyLine.SingleLine); } if (this.defines.Count > 0) { e.AddElements(this.defines); e.AddElement(EmptyLine.SingleLine); } e.AddElements(this.functionDeclarations, EmptyLine.SingleLine); e.AddElements(this.variableDeclarations, EmptyLine.SingleLine); e.AddElement(EmptyLine.SingleLine); CodeContainerBase cplusplusclose = e.AddElement(new PP_Ifdef("__cplusplus")) as CodeContainerBase; cplusplusclose.AddElement(new Code("}")); e.AddElement(EmptyLine.SingleLine); cFile.Save(cGenerator); }
public override void GenerateCode(int level, CGenerator generator) { if (this.Type != null) { generator.IndentLine(level); generator.OutputStream.Write("extern "); // declare the variable this.Type.GenerateCode(generator); generator.OutputStream.Write(";"); generator.WriteNewLine(); } }
void Generate() { Output = new ProjectOutput(); Generator generator = null; switch (Options.GeneratorKind) { case GeneratorKind.C: generator = new CGenerator(Context); break; case GeneratorKind.ObjectiveC: generator = new ObjCGenerator(Context); break; case GeneratorKind.Java: generator = new JavaGenerator(Context); break; default: throw new NotImplementedException(); } generator.SetupPasses(); foreach (var unit in Context.ASTContext.TranslationUnits) { var outputs = generator.Generate(new[] { unit }); foreach (var output in outputs) { output.Process(); var text = output.Generate(); Output.WriteOutput(output.FilePath, text); } } if (Options.GenerateSupportFiles) { GenerateSupportFiles(); } }
public override void GenerateCode(int level, CGenerator generator) { generator.IndentLine(level); generator.OutputStream.Write(CommentStart); if (!this.SingleLine) { generator.WriteNewLine(); generator.IndentLine(level); generator.WriteMultilineString(this.Comment_, level); generator.WriteNewLine(); generator.IndentLine(level); } else { generator.OutputStream.Write(" " + Comment_ + " "); } generator.OutputStream.Write(CommentEnd); generator.WriteNewLine(); }
void Generate() { Output = new ProjectOutput(); Generators.Generator generator = null; switch (Options.Language) { case GeneratorKind.C: generator = new CGenerator(Context, Options); break; case GeneratorKind.ObjectiveC: generator = new ObjCGenerator(Context, Options); break; default: throw new NotImplementedException(); } foreach (var unit in Context.ASTContext.TranslationUnits) { var templates = generator.Generate(unit); foreach (var template in templates) { template.Process(); var text = template.Generate(); var path = string.Format("{0}.{1}", template.Name, template.FileExtension); Output.WriteOutput(path, text); } } if (Options.GenerateSupportFiles) { GenerateSupportFiles(Output); } }
static void Main(string[] args) { // try { CmdLineParser cmdLineParser = new CmdLineParser("FSMCompiler v1.0"); cmdLineParser.Add(new ArgumentDefinition("source", 1, "Archivo de entrada.", true)); cmdLineParser.Add(new OptionDefinition("G", "Generador.")); cmdLineParser.Add(new OptionDefinition("H", "Ayuda.")); cmdLineParser.Add(new OptionDefinition("P", "Parametro especifico del generador.")); if (args.Length == 0) { Console.WriteLine(cmdLineParser.HelpText); Console.ReadKey(true); } else { string generatorName = "C"; string sourceFileName = ""; GeneratorParameters generatorParameters = new GeneratorParameters(); cmdLineParser.Parse(args); foreach (OptionInfo optionInfo in cmdLineParser.Options) { switch (optionInfo.Name) { case "G": generatorName = optionInfo.Value; break; case "P": generatorParameters.Add(optionInfo.Value); break; } } foreach (ArgumentInfo argumentInfo in cmdLineParser.Arguments) { switch (argumentInfo.Name) { case "source": sourceFileName = argumentInfo.Value; break; } } Console.WriteLine(); Console.WriteLine("FsmCompiler v1.1"); Console.WriteLine("-------------------------------------------------------------"); Console.WriteLine(" Finite state machine compiler tool."); Console.WriteLine(" Copyright 2015-2020 Rafael Serrano ([email protected])"); Console.WriteLine(); XmlLoader loader = new XmlLoader(); Machine machine = loader.Load(sourceFileName); IGenerator generator = null; switch (generatorName) { case "DOT": generator = new DOTGenerator(generatorParameters); break; case "C": default: generator = new CGenerator(generatorParameters); break; case "CPP": generator = new v1.Generator.CPP.CPPGenerator(generatorParameters); break; } generator.Generate(machine); } /* } * * catch (Exception e) { * while (e != null) { * Console.WriteLine(e.Message); * e = e.InnerException; * } * }*/ }
public virtual void GenerateCode(int level, CGenerator generator) { }
public void Save(CGenerator cGenerator) { CFile cFile = new CFile(); cFile.AddElement(new Comment("Generated by LwipMibCompiler")); cFile.AddElement(EmptyLine.SingleLine); cFile.AddElement(new PP_Include(LwipDefs.Incl_SnmpOpts)); CodeContainerBase e = cFile.AddElement(new PP_If(LwipDefs.Opt_SnmpEnabled)) as CodeContainerBase; e.AddElement(EmptyLine.SingleLine); // include header file string file = cGenerator.FileName; if (!String.IsNullOrWhiteSpace(file)) { string ext = System.IO.Path.GetExtension(file); string headerFile = !String.IsNullOrEmpty(ext) ? file.Substring(0, file.Length - ext.Length) : file; headerFile += ".h"; e.AddElement(new PP_Include(headerFile)); } // include common snmp files e.AddElement(new PP_Include("lwip/apps/snmp.h")); e.AddElement(new PP_Include("lwip/apps/snmp_core.h")); e.AddElement(new PP_Include("lwip/apps/snmp_scalar.h")); e.AddElement(new PP_Include("lwip/apps/snmp_table.h")); if (this.includes.Count > 0) { e.AddElement(EmptyLine.SingleLine); e.AddElements(this.includes); } if (this.defines.Count > 0) { e.AddElement(EmptyLine.SingleLine); e.AddElements(this.defines); } if (this.declarations.Count > 0) { e.AddElement(EmptyLine.TwoLines); e.AddElements(this.declarations); } if (this.implementation.Count > 0) { e.AddElement(EmptyLine.TwoLines); e.AddElements(this.implementation); } if (this.preservedCode.Count > 0) { e.AddElement(EmptyLine.TwoLines); e.AddElement(new Comment(PreservedSectionHeader)); e.AddElement(EmptyLine.SingleLine); e.AddElements(this.preservedCode); } cFile.Save(cGenerator); }
public override void GenerateCode(int level, CGenerator generator) { generator.WriteMultilineString(this.Value); }
public override void GenerateCode(int level, CGenerator generator) { generator.IndentLine(level); generator.WriteMultilineString(this.Code_, level); generator.WriteNewLine(); }
static void Main(string[] args) { Console.WriteLine("lwIP MIB Compiler"); Console.WriteLine(""); // check args if ((args.Length < 2) || String.IsNullOrWhiteSpace(args[0]) || String.IsNullOrWhiteSpace(args[1])) { PrintUsage(); return; } string mibFile = args[0]; if (!File.Exists(mibFile)) { Console.WriteLine(String.Format("Unable to find file '{0}'!", mibFile)); } string destFile = args[1]; string destHeaderFile; if (Directory.Exists(destFile)) { // only directory passed -> create dest filename from mib filename string mibFileName = Path.GetFileNameWithoutExtension(mibFile).ToLowerInvariant(); destFile = Path.Combine(destFile, mibFileName + ".c"); } string destFileExt = Path.GetExtension(destFile); if (!String.IsNullOrEmpty(destFileExt)) { destHeaderFile = destFile.Substring(0, destFile.Length - destFileExt.Length); } else { destHeaderFile = destFile; } destHeaderFile += ".h"; for (int i = 2; i < args.Length; i++) { if (!String.IsNullOrWhiteSpace(args[i]) && Directory.Exists(args[i])) { MibTypesResolver.RegisterResolver(new FileSystemMibResolver(args[i], true)); } } // read and resolve MIB Console.WriteLine(" Reading MIB file..."); MibDocument md = new MibDocument(mibFile); MibTypesResolver.ResolveTypes(md.Modules[0]); MibTree mt = new MibTree(md.Modules[0] as MibModule); if (mt.Root.Count == 0) { Console.WriteLine("No root element found inside MIB!"); return; } MibCFile generatedFile = new MibCFile(); MibHeaderFile generatedHeaderFile = new MibHeaderFile(); foreach (MibTreeNode mibTreeNode in mt.Root) { // create LWIP object tree from MIB structure Console.WriteLine(" Creating lwIP object tree " + mibTreeNode.Entity.Name); SnmpMib snmpMib = new SnmpMib(); snmpMib.Oid = mibTreeNode.Entity.Value; snmpMib.BaseOid = MibTypesResolver.ResolveOid(mibTreeNode.Entity).GetOidValues(); snmpMib.Name = mibTreeNode.Entity.Name; ProcessMibTreeNode(mibTreeNode, snmpMib); // let the tree transform itself depending on node structure snmpMib.Analyze(); if (snmpMib.ChildNodes.Count != 0) { // generate code from LWIP object tree Console.WriteLine(" Generating code " + snmpMib.Name); snmpMib.Generate(generatedFile, generatedHeaderFile); } } string preservedCode = MibCFile.GetPreservedCode(destFile); if (!string.IsNullOrEmpty(preservedCode)) { generatedFile.PreservedCode.Add(new PlainText(preservedCode)); } else { generatedFile.PreservedCode.AddRange(generatedFile.Implementation); } generatedFile.Implementation.Clear(); using (StreamWriter fileWriter = new StreamWriter(destHeaderFile)) { CGenerator cGenerator = new CGenerator(fileWriter, destHeaderFile, 3, " ", Environment.NewLine); generatedHeaderFile.Save(cGenerator); } using (StreamWriter fileWriter = new StreamWriter(destFile)) { CGenerator cGenerator = new CGenerator(fileWriter, destFile, 3, " ", Environment.NewLine); generatedFile.Save(cGenerator); } Console.WriteLine(" Done"); }