我想用Python制作一种语言来训练我。但是,在某些情况下,我在解析时会出错。我使用RPLY来做到这一点。
我做了这个语法:
@self.pg.production('if_statement : IF expression OPEN_CRO NEWLINE statementlist NEWLINE CLOSE_CRO')
def ifexp(p):
return If(p[1], p[4])
@self.pg.production('if_statement : IF expression NEWLINE OPEN_CRO NEWLINE statementlist NEWLINE CLOSE_CRO')
def ifexp2(p):
return If(p[1], p[5])
@self.pg.production('else_statement : ELSE OPEN_CRO NEWLINE statementlist NEWLINE CLOSE_CRO')
def elseexp(p):
return Else(p[3])
@self.pg.production('else_statement : ELSE NEWLINE OPEN_CRO NEWLINE statementlist NEWLINE CLOSE_CRO')
def elseexp3(p):
return Else(p[4])
@self.pg.production('ifelse_statement : if_statement else_statement')
def ifelse(p):
return IfElse(p[0], p[1])
@self.pg.production('ifelse_statement : if_statement NEWLINE else_statement')
def ifelse2(p):
return IfElse(p[0], p[2])
但是如果我输入以下代码:
a = enter("Votre age : ")
a = int(a)
if a >= 18
{
show("Vous etes majeur")
}
show(a)
我在上一次“演出”时出错。
PS:如果我删除了有关ifelse_statement的规则,那是可行的(但是我不能使用if-else条件。)
谢谢(如果您需要其他代码,请询问它)