我应该如何将预处理器添加到flex + bison汇编程序中?

时间:2012-04-14 03:43:07

标签: bison yacc flex-lexer dcpu-16

我使用flex + bison写了一个简单的汇编程序。我想在汇编语言中添加预处理器(宏)。这是我第一次尝试使用flex + bison,我不知道该怎么做。

是否适合添加一个单独的flex + bison实例并完全单独进行预处理?或者他们是否支持为不同的处理阶段表达不同的结构?

如果对DCPU-16架构感到好奇the assembler is here

2 个答案:

答案 0 :(得分:3)

你肯定想要一个单独的解析器。这就是gcc的方式 - 你可以在预处理之后停止编译(我相信-E)。从技术上来说,编写单个解析器可能是有可能的,但是它会遇到很多麻烦,我没有看到它为什么有用的特殊原因,而保持它是分开的将允许你在预处理之后停止编译,不仅可以在预处理器/汇编程序本身,而且可以使用它编写的任何程序,更容易地跟踪错误。

答案 1 :(得分:2)

你可以看看我的。我有同样的想法:P You can find it here它支持表达式,但我意识到如果你想支持前向引用,你必须拥有它。也许当Notch发现不固定大小的操作码更难以制作汇编程序时他会改变它:)

关于这个主题的一本体面的书是Flex and Bison它显示了你如何做“状态”,你可以推动词法分析器状态并更改文件缓冲区。它只显示了一个基本的解析器/ lex。它帮助了我的学习:)