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获取和拆分词法分析器内容。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...