首页 文章

带有Python3的ANTLR4:“IndentationError:意外缩进”

提问于
浏览
0

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

...
term
    : term '*' fact
    | term '/' fact 
    {
print('a')
    }
    | fact
      {
print('b')
      }
    ;
...

哪个不编译并引发“ print('a') IndentationError : unexpected indent ” . 我试图理解,我发现以下代码块不会抛出任何错误:

...
term
    : term '*' fact
    | term '/' fact 
    {print('a')}
    | fact
      {
print('b')
      }
    ;
...

当我使用一个操作数但没有使用2个操作数时,它就好像没问题 .

Why ?

我在互联网上进行了自己的搜索,但我没有发现任何类似的情况 .

1 回答

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

相关问题