Я делаю простой компилятор 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()
работать с инструкциями напрямую в его семантических правилах.Однако я не могу определить ни один streamstring
в типах Yacc (см .: мой предыдущий вопрос ).
Итак, как мне сделать, чтобы поместить инструкции функции в строку (легко,не используете strcat
, что может привести к путанице на стороне выделения памяти), а затем обернуть их предыдущими инструкциями ASM?