我正在尝试 lex(然后解析)类似 C 的语言。在 C 中,有一些预处理器指令,其中换行符很重要,然后是实际代码,它们只是空格。
这样做的一种方法是像早期的 C 编译器一样执行两遍过程 - 为 # 指令设置一个单独的预处理器,然后对它的输出进行 lex。
但是,我想知道是否可以在单个词法分析器中完成。我对编写 scala 解析器组合器代码感到非常满意,但我不太确定如何StdLexical
处理空格。
有人可以编写一些简单的示例代码,说可以#include
使用一行(使用换行符)和一些琐碎的代码(忽略换行符)吗?或者这是不可能的,最好采用 2-pass 方法?