2017-10-27 18 views
0

저는 ANTLR4를 Python 3.4.2로 배우고 있습니다. 여기서 목표는 여러 줄의 파이썬 코드를 규칙의 {} 안에 작성하는 것입니다. 컴파일하고 제기하지 않는ANTLR4 with Python3 : "IndentationError : unexpected indent"

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

"예기치 않은 들여 쓰기인쇄 ('A') IndentationError를 :"나는 내 파서의 규칙을 정의 할 때, 나는 다음과 같은 코드 블록을 가지고있다. 이해하려고 노력하고 난 다음 코드 블록이 오류가 발생하지 않는 것으로 확인 :

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

그것은 내가 하나의 피연산자를 사용하는 경우가 확인 된 것처럼 역할을하지만 두 피연산자를.

왜?

나는 인터넷에서 내 자신의 검색을했는데 비슷한 사례를 찾지 못했습니다.

답변

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