python - 你会如何解析缩进(python 风格)?

标签 python parsing indentation lexer

您将如何定义解析器和词法分析器规则来解析使用缩进来定义范围的语言。

我已经用谷歌搜索并找到了一种聪明的方法来解析它,方法是在词法分析器中生成 INDENT 和 DEDENT 标记。

如果我遇到有趣的事情,我会更深入地研究这个问题并发布答案,但我希望看到其他解决问题的方法。

编辑: 正如查理指出的那样,there is already another thread very similar if not the same.我的帖子应该被删除吗?

最佳答案

这是一种假设,因为它取决于您的词法分析器和解析器所采用的技术,但最简单的方法似乎是使用类似于 C 中大括号的 BEGINBLOCK 和 ENDBLOCK 标记。使用 "offsides rule"您的词法分析器需要跟踪一堆缩进级别。当缩进级别增加时,为解析器发出 BEGINBLOCK;当缩进级别降低时,发出 ENDBLOCK 并从堆栈中弹出级别。

Here's another discussion关于这个,顺便说一句。

关于python - 你会如何解析缩进(python 风格)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/356638/

相关文章:

parsing - LR(0)、LL(0)、LALR(1)等之间的关系?

java - Antlr - 输入不匹配错误 - token 无法识别

Emacs 方案(方案模式)缩进

python - PyQt、PyOPENGL : when adding a texture to an area, 然后其他区域失去颜色并变成白色

python - 来自 Pandas 数据框嵌套字典的 Pandas 数据框

python - 使用编译代码时出现非 Ascii 字符错误

python - 使用 GCD 从 Cocoa 应用程序运行 Python 脚本

Python解析dirs,删除子目录树

c - GNU 代码风格的 GNU 缩进问题

xcode - 是否可以在 Xcode 中为每个项目(甚至每个文件)设置缩进设置?