Пример #1
0
        public void Convert()
        {
            var lexer        = new CLexer(rdr);
            var parser       = new CParser(parserState, lexer);
            var declarations = parser.Parse();
            var symbolTable  = new SymbolTable(platform)
            {
                NamedTypes =
                {
                    { "size_t",  new PrimitiveType_v1 {
                          Domain = Domain.UnsignedInt, ByteSize = 4
                      } },                                                                               //$BUGBUG: arch-dependent!
                    { "va_list", new PrimitiveType_v1 {
                          Domain = Domain.Pointer, ByteSize = platform.PointerType.Size
                      } }
                }
            };

            foreach (var decl in declarations)
            {
                symbolTable.AddDeclaration(decl);
            }

            var lib = new SerializedLibrary
            {
                Types      = symbolTable.Types.ToArray(),
                Procedures = symbolTable.Procedures.ToList(),
            };
            var ser = SerializedLibrary.CreateSerializer();

            ser.Serialize(writer, lib);
        }
Пример #2
0
        public void Convert()
        {
            var lexer        = CreateLexer();
            var parser       = new CParser(parserState, lexer);
            var declarations = parser.Parse();
            var symbolTable  = CreateSymbolTable();

            foreach (var decl in declarations)
            {
                try
                {
                    symbolTable.AddDeclaration(decl);
                } catch (Exception ex)
                {
                    Console.WriteLine("Error when handling declaration {0}: {1}", decl, ex.Message);
                    throw;
                }
            }

            var lib = new SerializedLibrary
            {
                Types      = symbolTable.Types.ToArray(),
                Procedures = symbolTable.Procedures.ToList(),
            };
            var ser = SerializedLibrary.CreateSerializer();

            ser.Serialize(writer, lib);
        }
Пример #3
0
        public override TypeLibrary Load(IPlatform platform, TypeLibrary dstLib)
        {
            var ser    = SerializedLibrary.CreateSerializer();
            var slib   = (SerializedLibrary)ser.Deserialize(stream);
            var tldser = new TypeLibraryDeserializer(platform, true, dstLib);
            var tlib   = tldser.Load(slib);

            return(tlib);
        }
Пример #4
0
        public static TypeLibrary Load(Platform platform, string fileName)
        {
            var prefix  = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var libPath = Path.Combine(prefix, fileName);

            if (!File.Exists(libPath))
            {
                libPath = Path.Combine(Directory.GetCurrentDirectory(), fileName);
            }
            XmlSerializer     ser = SerializedLibrary.CreateSerializer();
            SerializedLibrary slib;

            using (FileStream stm = new FileStream(libPath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                slib = (SerializedLibrary)ser.Deserialize(stm);
            }
            return(Load(platform, slib));
        }
Пример #5
0
        public void Convert()
        {
            var lexer        = new CLexer(rdr);
            var parser       = new CParser(parserState, lexer);
            var declarations = parser.Parse();

            foreach (var decl in declarations)
            {
                decl.Accept(this);
            }

            var lib = new SerializedLibrary
            {
                Types      = Types.ToArray(),
                Procedures = procs.ToList(),
            };
            var ser = SerializedLibrary.CreateSerializer();

            ser.Serialize(writer, lib);
        }
Пример #6
0
        public void Convert()
        {
            var lexer        = CreateLexer();
            var parser       = new CParser(parserState, lexer);
            var declarations = parser.Parse();
            var symbolTable  = CreateSymbolTable();

            foreach (var decl in declarations)
            {
                symbolTable.AddDeclaration(decl);
            }

            var lib = new SerializedLibrary
            {
                Types      = symbolTable.Types.ToArray(),
                Procedures = symbolTable.Procedures.ToList(),
            };
            var ser = SerializedLibrary.CreateSerializer();

            ser.Serialize(writer, lib);
        }