如何解决Python3解析器生成器
| 我正在寻找一种解析器生成器,以生成可与Python3一起使用的相当复杂的语言(其复杂度类似于Python本身)。如果它可以自动生成AST,那将是一个额外的好处,但是如果它在解析时仅调用规则,则可以。我没有特殊要求,也不必非常高效/快速。解决方法
LEPL并非完全是解析器生成器-更好!解析器是用Python代码定义的,并在运行时构造(因此效率低下,但更易于使用)。它使用运算符重载来构建易于阅读的DSL。 BNF
c := a b | b c.
之类的内容为c = a & b | b & c
。
您可以将(子)解析器的结果传递给可调用的可调用对象,这对于AST生成非常有用(对于将数字文字转换为Python级数字对象也很有用)。它是递归下降解析器,因此您最好避免在语法中进行左递归(存在可以使左递归起作用的记忆对象,但是“ Lepl \对它们的支持在历史上一直是不可靠的(笨拙)”)。
,ANTLR可以在Python中生成词法分析器和/或解析器。您还可以使用它来创建AST和类似迭代器的结构来遍历AST(称为树语法)。
有关使用Python目标生成AST的ANTLR演示,请参阅ANTLR获取和拆分词法分析器内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。