我正在用它自己的类似于 Python 的内置语言编写一个工具。我想让缩进在语法中有意义(这样行首的制表符和空格将代表命令的嵌套)。
做这个的最好方式是什么?
我以前写过递归下降和有限自动机解析器。
我正在用它自己的类似于 Python 的内置语言编写一个工具。我想让缩进在语法中有意义(这样行首的制表符和空格将代表命令的嵌套)。
做这个的最好方式是什么?
我以前写过递归下降和有限自动机解析器。
查看python 编译器,特别是compiler.parse
.
我建议将 ANTLR 用于任何词法分析器/解析器生成(http://www.antlr.org)。
此外,该网站(http://erezsh.wordpress.com/2008/07/12/python-parsing-1-lexing/)有更多信息,特别是:
Python 的缩进不能用 DFA 解决。(我仍然对它是否可以用上下文无关语法来解决感到困惑)。
PyPy 发表了一篇关于对 Python 进行词法分析的有趣文章(他们打算通过对词法分析器输出进行后处理来解决它)
CPython 的分词器是用 C 编写的。它是临时的、手写的和复杂的。这是我所知道的唯一官方的 Python 词法实现。