2

我正在开发一个有趣的汇编程序,用 C、flex、bison 编写。我想添加宏、包含和重复块,并且正在考虑使用单独的预处理阶段解析器来执行此操作。

我的问题是,我如何跟踪原始源代码行号(和文件名)?这是为了生成有用的错误消息、漂亮的打印和生成调试信息。

预处理完成后第二个解析器中的 yylineno 可能会在宏扩展等之后被偏移。

4

1 回答 1

5

你可以加

;#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
于 2012-05-04T10:21:01.870 回答