ANTLR4 with Python3 : "IndentationError : unexpected indent"



我正在用Python 3.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')
      }
    ;
...

当我使用一个操作数但不使用 2 个操作数时,它表现得好像没问题。

为什么?

我在互联网上进行了自己的搜索,但没有找到任何类似的案例。

好的

,我发现了一些似乎有效的东西:

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

最新更新