Python 带ply的解析器-解析器规则简单引号

Python 带ply的解析器-解析器规则简单引号,python,parsing,ply,Python,Parsing,Ply,我正在用python和ply开发一个解析器。 但是我有一个关于解析规则的问题,因为我有这样的问题: def p_main(p): main : PROGRAMA ID declaraciones declaracion_funcion bloque 但是我已经看到规则使用简单的引用,为什么?它是用来做什么的 例如: def p_expression_binop(p): '''expression : expression PLUS expression

我正在用python和ply开发一个解析器。 但是我有一个关于解析规则的问题,因为我有这样的问题:

def p_main(p):
main : PROGRAMA ID declaraciones declaracion_funcion bloque
但是我已经看到规则使用简单的引用,为什么?它是用来做什么的

例如:

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]
为什么使用3个简单引号?

三个引号(双引号或单引号)在python中是一个多行字符串

三个引号(双引号或单引号)是python中的多行字符串


你试过运行你的程序了吗?我希望如果您这样做,您将得到语法错误,因为您的解析规则定义虽然有效,但不是有效的Python。PLY内省“p_xxx”方法的docstring,以读取对应于该表达式的解析规则的BNF,因为对引用字符串的内容没有约束。三重引号是我们在Python中定义多行字符串的方式,因此它非常适合捕获解析规则以对应于解析方法。

您试过运行程序吗?我希望如果您这样做,您将得到语法错误,因为您的解析规则定义虽然有效,但不是有效的Python。PLY内省“p_xxx”方法的docstring,以读取对应于该表达式的解析规则的BNF,因为对引用字符串的内容没有约束。三重引号是我们在Python中定义多行字符串的方式,因此它非常适合捕获解析规则以对应于解析方法。

谢谢,它非常有用谢谢,它非常有用谢谢,现在我看到了如何在规则上使用简单引号谢谢,现在我看到了如何在规则上使用简单引号