首页 > 解决方案 > 在 rply 中解析 IF 和 IF-ELSE 语句

问题描述

我想用 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 条件。)

谢谢(如果您想要其他代码,请询问)

标签: pythonparsing

解决方案


推荐阅读