我正在用ply开发python中的解析器。但是我有一个关于解析规则的问题,因为我有这样的问题:
def p_main(p):
main : PROGRAMA ID declaraciones declaracion_funcion bloquebutI已经看到规则使用简单的引语,为什么?,它是用来做什么的?
例如:
def p_expression_binop(p):
'''expression : expression PLUS expression
| expression MINUS expression
| expression TIMES expression
| expression DIVIDE expression'''
if p[2] == '+' : p[0] = p[1] + p[3]
elif p[2] == '-': p[0] = p[1] - p[3]
elif p[2] == '*': p[0] = p[1] * p[3]
elif p[2] == '/': p[0] = p[1] / p[3]为什么有三个简单的引号?
发布于 2018-09-20 17:28:42
你试过运行你的程序了吗?我希望如果您这样做了,您将得到SyntaxErrors,因为您对解析规则的定义,虽然是有效的BNF,但不是有效的Python。本文回顾了"p_xxx“方法的文档字符串,以读取与该表达式的解析规则相对应的BNF,因为引用字符串的内容不受约束。三引号是我们在Python中定义多行字符串的方法,因此它非常适合捕获解析规则以对应于解析方法。
发布于 2018-09-20 17:26:02
三个引号(双引号或单引号)是python中的多行字符串。
https://www.digitalocean.com/community/tutorials/how-to-format-text-in-python-3#multiple-lines
https://stackoverflow.com/questions/52430202
复制相似问题