Отслеживание исходных номеров строк с помощью расширения макроса

Я работаю на ассемблере для удовольствия, написана на C,flex,bison. Я хотел бы добавить макросы, включающие и повторяющиеся блоки, и думал об этом с помощью отдельного анализатора этапа предварительной обработки.

У меня вопрос, как я могу отслеживать исходные номера строк (и имена файлов)? Это для создания полезных сообщений об ошибках, красивой печати и создания отладочной информации.

yylineno во втором парсере после завершения предварительной обработки, вероятно, будет смещено после расширения макроса и так далее.

1 ответ

Решение

Можете добавить

;#file filename.asm
;#line 5

предварительно обработанный ассемблер так

foo:
PUSHREG(A,B,C)
;--10 lines of code
POPREG(A,B,C)
set PC,POP

превращается в

foo:
;#file functionmacros.asm
;#line 10
set push,A
set push,B
set push,C
;#file yourfile.asm
;#line 5
;--10 lines of code
;#file functionmacros.asm
;#line 30
set C,pop
set B,POP
set C,POP
;#file yourfile.asm
;#line 16
set PC,POP
Другие вопросы по тегам