blu*_*ift 2 yacc lex compiler-theory dcpu-16
我正在开发一个有趣的汇编程序,用C,flex,bison编写.我想添加宏,包含和重复块,并考虑使用单独的预处理阶段解析器执行此操作.
我的问题是,我如何跟踪原始源代码行(和文件名)?这用于生成有用的错误消息,漂亮的打印和生成调试信息.
预处理完成后第二个解析器中的yylineno可能会在宏扩展后偏移,依此类推.
你可以加
;#file filename.asm
;#line 5
Run Code Online (Sandbox Code Playgroud)
到预处理的汇编程序
foo:
PUSHREG(A,B,C)
;--10 lines of code
POPREG(A,B,C)
set PC,POP
Run Code Online (Sandbox Code Playgroud)
变成
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
Run Code Online (Sandbox Code Playgroud)