예제 #1
0
        /// <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);
        }
예제 #2
0
파일: Jikken.cs 프로젝트: lzh610/RTCOP
        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");
        }