Python 带蟒蛇3的ANTLR4:“;缩进错误:意外缩进“;

Python 带蟒蛇3的ANTLR4:“;缩进错误:意外缩进“;,python,parsing,antlr,python-3.4,antlr4,Python,Parsing,Antlr,Python 3.4,Antlr4,我正在使用Python3.4.2学习ANTLR4,我的目标是在规则的{}内编写多行Python代码。当我定义解析器的规则时,我有以下代码块: ... term : term '*' fact | term '/' fact { print('a') } | fact { print('b') } ; ... 它不会编译并引发“print('a')缩进错误:意外缩进”。我试图理解,发现以下代码块不会引发任何错误: ...

我正在使用Python3.4.2学习ANTLR4,我的目标是在规则的{}内编写多行Python代码。当我定义解析器的规则时,我有以下代码块:

...
term
    : term '*' fact
    | term '/' fact 
    {
print('a')
    }
    | fact
      {
print('b')
      }
    ;
...
它不会编译并引发“print('a')缩进错误:意外缩进”。我试图理解,发现以下代码块不会引发任何错误:

...
term
    : term '*' fact
    | term '/' fact 
    {print('a')}
    | fact
      {
print('b')
      }
    ;
...
当我使用一个操作数但不使用两个操作数时,它的行为就好像是正常的

为什么?


我自己在网上搜索过,但没有找到任何类似的案例

好的,我发现了一些似乎有效的方法:

...
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')}
    ;
...