我正在尝试使用 FsLexYacc 实现类似 Python 的空白缩进(读作:在需要时发出缩进/缩进标记)。
似乎 FsLexYacc 无法使用unput
C/C++ 示例用于对基于空格的缩进进行词法分析。我尝试在词法分析期间使用一个附加参数作为“缩进堆栈”,但每个 lex 规则无法返回一个以上的标记,因此无法在文件末尾返回所有待处理的 dedent 或在需要时返回多个 dedent。
有没有一种方法可以在 FsLexYacc 中实现基于空格的缩进,而无需首先标记完整的字符串并在所有标记上应用单独的传递以在适当的情况下用缩进/缩进替换空格?(即使这种可能的解决方案似乎也很难使用(LexBuffer<char> -> token)
签名,以便能够将其传递给生成的解析器)