【发布时间】:2012-01-19 20:17:02
【问题描述】:
我正在做一个简单的 C 编译器作为家庭作业。我有以下语法规则:
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 指令包装它们?
【问题讨论】:
标签: c++ c compiler-construction bison yacc