Example #1
0
 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();
 }
Example #2
0
 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");
 }
Example #3
0
        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);
        }
Example #4
0
		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();
		}
Example #5
0
        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--;
            }
        }
Example #7
0
		public override void GenerateCode(int level, CGenerator generator)
		{
			uint c = this.Count;

			while (c > 0)
			{
				generator.WriteNewLine();
				c--;
			}
		}
Example #8
0
        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);
        }
Example #10
0
		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();
			}
		}
Example #11
0
        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();
            }
        }
Example #12
0
        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();
            }
        }
Example #13
0
		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();
		}
        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();
        }
Example #15
0
        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);
            }
        }
Example #16
0
        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)
 {
 }
Example #18
0
        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);
        }
Example #19
0
 public override void GenerateCode(int level, CGenerator generator)
 {
     generator.WriteMultilineString(this.Value);
 }
Example #20
0
		public override void GenerateCode(int level, CGenerator generator)
		{
			generator.IndentLine(level);
			generator.WriteMultilineString(this.Code_, level);
			generator.WriteNewLine();
		}
 public override void GenerateCode(int level, CGenerator generator)
 {
     generator.IndentLine(level);
     generator.WriteMultilineString(this.Code_, level);
     generator.WriteNewLine();
 }
Example #22
0
		public virtual void GenerateCode(int level, CGenerator generator)
		{
		}
        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");
        }
Example #24
0
		public override void GenerateCode(int level, CGenerator generator)
		{
			generator.WriteMultilineString(this.Value);
		}