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); }
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); }
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); }
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)); }
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); }
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); }