- 逆コンパイラCodeReverseを作る
262 :片山博文MZ ◆T6xkBnTXz7B0 []:2015/03/22(日) 14:04:56.12 ID:0xruUqhc - typed value実装を修正。
https://github.com/katahiromz/DoWonders 次は、マクロ展開を実装します。
|
- C/C++の宿題片付けます 168代目
577 :片山博文MZ ◆T6xkBnTXz7B0 []:2015/03/22(日) 14:13:49.52 ID:0xruUqhc - QZさん、生きてますか!? 早い者勝ちでアマゾンギフト券5000円だぞ!!!
[1] 授業単元: 逆コンパイラ作成実習 [2] 問題文(含コード&リンク): https://github.com/katahiromz/DoWonders https://github.com/katahiromz/DoWonders/blob/master/tools/cparser/Main.cpp tools/cparserの中にあるMain.cppのCrExpandMacro関数を実装せよ。 CrExpandMacro関数は、マクロを展開して文字列を返す関数になる。 CR_MacroSetとCR_Macroの定義は、Main.hにある。 struct CR_Macro { int m_num_params; std::vector<std::string> m_params; std::string m_contents; CR_Location m_location; }; typedef std::unordered_map<std::string,CR_Macro> CR_MacroSet; CR_Macroのm_num_paramsは、マクロの引数の個数を表す。 m_paramsは、仮引数の名前のベクターである。 m_contentsは、マクロ定義の中身である。 CR_Locationは、ソースの場所を表す構造体でLocation.hに定義されている。 必要ならば、別途、関数やクラスなどを追加してもいい。 [3] 環境 [3.1] Windows [3.2] MSVC or TDM-GCC-64 [3.3] C++ [4] 無期限 [5] なし
|
- C/C++の宿題片付けます 168代目
578 :片山博文MZ ◆T6xkBnTXz7B0 [sage]:2015/03/22(日) 14:15:57.00 ID:0xruUqhc - 補記:展開するマクロは、仮引数が0個であると仮定する。
|
- C/C++の宿題片付けます 168代目
579 :片山博文MZ ◆T6xkBnTXz7B0 [sage]:2015/03/22(日) 14:16:46.05 ID:0xruUqhc - >>578は取り消します。
|