【问题标题】:ANTLR4 with Python3 : "IndentationError : unexpected indent"ANTLR4 与 Python3:“IndentationError:意外缩进”
【发布时间】:2017-10-27 22:20:45
【问题描述】:

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

当我使用一个操作数而不是两个操作数时,它的行为就好像没问题。

为什么?

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

【问题讨论】:

    标签: python parsing antlr python-3.4 antlr4


    【解决方案1】:

    好的,我发现了一些似乎可行的方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-04
      • 2022-08-20
      • 2011-04-24
      • 2012-05-01
      • 1970-01-01
      相关资源
      最近更新 更多