1

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

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

如果好奇,汇编器就在这里,用于 DCPU-16 架构。

4

2 回答 2

4

你肯定想要一个单独的解析器。这就是 gcc 的方式 - 您可以在预处理后停止编译(-E我相信)。从技术上讲,可以将其编写为单个解析器,但这会麻烦很多,而且我看不出它有用的特定原因,而将其分开将允许您在预处理后停止编译,不仅可以更轻松地跟踪预处理器/汇编器本身的错误,还可以更轻松地跟踪使用它编写的任何程序。

于 2012-04-14T04:07:55.750 回答
3

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

关于该主题的一本不错的书是Flex and Bison 它展示了如何执行“状态”,即您可以推送词法分析器状态并更改文件缓冲区。它为此显示了一个基本的解析器/ lex。它对我的学习有很大帮助:)

于 2012-04-23T03:53:54.537 回答