python-3.x - antlr的python目标中的错误
问题描述
antlr-4.9生成的python代码有一些语法问题。例如,对于以下 antlr 语法:
e returns [ObjExpr v]
: a=e op=('*'|'/') b=e {
$v = ObjExpr($op.type)
$v.e1 = $a.v
$v.e2 = $b.v
}
| INT {
$v = ObjExpr(21)
$v.i = $INT.int
}
;
MUL : '*' ;
DIV : '/' ;
INT : [0-9]+ ;
NEWLINE:'\r'? '\n' ;
WS : [ \t]+ -> skip ;
生成的代码是:
localctx.v = ObjExpr((0 if localctx.op is None else localctx.op.type())
localctx.v.e1 = localctx.a.v
localctx.v.e2 = localctx.b.v
而正确的代码应该是:
localctx.v = ObjExpr((0 if localctx.op is None else localctx.op.type))
localctx.v.e1 = localctx.a.v
localctx.v.e2 = localctx.b.v
即代码缩进错误,大括号数不匹配。手动编辑生成的解析器文件以修复这些错误使代码正常运行。如何报告此错误并修复它?
解决方案
推荐阅读
- c# - 如何解决 iMobileDevice-Net 中的 AFC_E_UNKNOWN_ERROR
- git - 发行版升级后,mercurial 不会提交 git subrepo
- sql-server - 计算断开间隔 SQL Server 的最小和最大时间
- r - 在R中为时间图绘制多条线
- html - 哪些 HTML 标签及其属性可以加载外部资源?
- python - 是否可以在 Python 中创建随机大小写选择器?
- php - PHP中的Time()函数总是显示相同的值
- java - NotificationManagerCompat 中的 (android.content.Context) 无法应用于
- c - 在具有库的目标主机上开发 Paho-Mqtt-C 应用程序
- azure-active-directory - Azure AD 中 auth\access 令牌请求的限制