我正在做一個簡單的C編譯器作爲作業。我有以下的語法規則:由一些ASM代碼包裝功能說明
function_definition
: type_name declarator compound_statement
我的語義規則應該將其轉化爲:
declarator:
push %ebp
mov %esp %ebp
// compound_statement (function instructions)
pop %ebp
ret
由於compound_statement
規則將前function_definition
被稱爲,我不能fprintf()
功能指令直接在它的語義規則。但是,我無法在Yacc類型中定義任何streamstring
(請參閱:my previous question)。
那麼我應該如何將函數指令放入一個字符串中(很容易,不會使用strcat
這會在內存分配方面造成混亂),然後用前面的ASM指令來包裝它們?
這就是Simon Ritcher建議的「中等規模」,它似乎對我有用。 –