FsLexYacc空格缩进

时间:2016-10-26 20:34:51

标签: f# compiler-construction fslex

我试图用FsLexYacc实现类似Python的空格缩进(读作:发送缩进/ dedent标记,如果需要)。

似乎FsLexYacc无法使用(LexBuffer<char> -> token)这就是基于lexing white-space的缩进使用的C / C ++示例。我尝试使用另一个参数作为&#34;缩进堆栈&#34;在lexing期间但不能为每个lex规则返回多个令牌,这使得无法在文件末尾返回所有未决的dedents或者在需要时返回多个dedents。

有没有办法在FsLexYacc中实现基于空格的缩进,而不需要首先对整个字符串进行标记,并在所有标记上应用单独的传递以在适当的位置用空格/ dedent替换空格? (即使这个可能的解决方案似乎很难使用{{1}}签名,以便能够将其传递给生成的Parser)

0 个答案:

没有答案