/// <summary> /// .lcppからレイヤ構造ファイルにコンパイル。 /// </summary> /// <param name="fileName">ファイル名。</param> /// <returns>コンパイル結果。</returns> private LayerStructureFile CompileLCppToObjectFile(string fileName) { // ファイルチェック string fileName2 = fileName; if (!File.Exists(fileName2)) { fileName2 = SourceRootPath + fileName; if (!File.Exists(fileName2)) { throw new FileNotFoundException(fileName + " が見つかりません", fileName); } } // ファイルオープン RTCOPSourceFile src = null; using (StreamReader sr = new StreamReader(fileName2, Encoding)) { string text = sr.ReadToEnd(); src = new RTCOPSourceFile(fileName2, text); } // プリプロセス var src2 = _RTCOPPreprocessor.Run(src); // コンパイル var result = _RTCOPCompiler.Compile(src2); return(result); }
public static void Test() { string src = @" baselayer { // ベースクラス base class Sample { public: Sample(); virtual ~Sample(); }; } "; var text = RTCOPParser.BaseLayerDefinition.TokenWithSkipComment().Many().Parse(src); //var text = PreprocessParser.DirectiveOrLine.TokenWithSkipCommentForPreprocessParser().Many().Parse(src2); //var text = RTCOPParser.BaseLayerDefinition.TokenWithSkipComment().Many().Parse(src); //var text = TokenParser.Token.TokenWithSkipComment().Many().Parse(src); //var text = PreprocessParser.Directive.TokenWithSkipCommentForPreprocessParser().Many().Parse(src); //foreach (var t in text) Console.WriteLine(t); //Console.WriteLine(text); RTCOPSourceFile f = new RTCOPSourceFile("a.lcpp", src); RTCOPPreprocessor p = new RTCOPPreprocessor(new string[0], new List <string>(), Encoding.UTF8); var f2 = p.Run(f); Console.WriteLine(f2.Text); RTCOPCompiler c = new RTCOPCompiler(null); var of = c.Compile(f2); LayerStructureFile.SaveFile(@"C:\Users\Ikuta\Desktop\aaa.lobj", of); var of2 = LayerStructureFile.LoadFile(@"C:\Users\Ikuta\Desktop\aaa.lobj"); }