如何定义解析器和词法分析器规则来解析使用缩进来定义范围的语言.
我已经google了一下,通过在词法分析器中生成INDENT和DEDENT令牌,找到了一种解析它的聪明方法.
如果我谈到一些有趣的东西,我会更深入地研究这个问题并发表答案,但我希望看到解决问题的其他方法.
编辑:
正如查理所指出的那样,there is already another thread very similar if not the same.我的帖子应该被删除吗?
解决方法:
这是一种假设,因为它取决于你的词法分析器和解析器有什么技术,但最简单的方法似乎是让BEGINBLOCK和ENDBLOCK令牌类似于C中的大括号.使用“offsides rule”你的词法分析器需要跟踪一堆压力水平.当缩进级别增加时,为解析器发出BEGINBLOCK;当缩进级别减小时,从堆栈中发出ENDBLOCK和弹出级别.
这个上的Here’s another discussion,SO,顺便说一句.