python - 在 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 条件。)
谢谢(如果您想要其他代码,请询问)
解决方案
推荐阅读
- excel - EXCEL - A 列中的单元格计数,其中值不是数字,但 B 列 =“X”
- reactjs - 将数据从功能组件传递到类组件
- python - 如果 pandas 中没有其他唯一列,如何将多列转换为单独的行/值?
- azure - 如何自动更新服务总线队列消息的锁定持续时间
- c++ - std::condition_variable::wait_until 的返回值
- javascript - Fullcalendar 没有水平滚动条
- postgresql - 是否可以在 postgreSQL 的策略中获取查询信息?
- github - 如何根据文件夹匹配有条件地运行 git 操作
- jenkins - 詹金斯:我们可以用用户定义的分支检查子模块吗
- android - 如何显示没有三点android的选项菜单?需要去掉三点菜单并在底部显示选项菜单