Разбор IF и IF-ELSE оператора в rply - PullRequest
1 голос
/ 02 апреля 2019

Я хочу сделать один язык в 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.)

Спасибо (если вам нужен другой код, спросите его)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...