我正在学习使用Python 3.4.2的ANTLR4,我的目标只是在规则的{}内编写多行Python代码。当我定义解析器的规则时,我有以下代码块:
...
term
: term '*' fact
| term '/' fact
{
print('a')
}
| fact
{
print('b')
}
;
...
哪个不编译并引发" 打印(' a')IndentationError:意外缩进"。我试图理解,我发现以下代码块不会引发任何错误:
...
term
: term '*' fact
| term '/' fact
{print('a')}
| fact
{
print('b')
}
;
...
当我使用一个操作数而不是2个操作数时,它就好像没问题。
为什么?
我在互联网上进行了自己的搜索,但我没有发现任何类似的情况。
答案 0 :(得分:0)
好的,我找到了似乎有用的东西:
...
term
: term '*' fact
| term '/' fact
{print('a1')}
{print('a2')}
| fact
{print('b1')}
{print('b2')}
;
...
它也可以缩进:
...
term
: term '*' fact
| term '/' fact
{if True:}
{ print('a1')}
{ print('a2')}
| fact
{print('b1')}
{print('b2')}
;
...