首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语法分析器,具有层-分析器规则,简单引用

问语法分析器,具有层-分析器规则,简单引用
EN

Stack Overflow用户
提问于 2018-09-20 17:16:51
回答 2查看 210关注 0票数 0

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

代码语言:javascript
复制
def p_main(p):
main : PROGRAMA ID declaraciones declaracion_funcion bloque

butI已经看到规则使用简单的引语,为什么?,它是用来做什么的?

例如:

代码语言:javascript
复制
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]

为什么有三个简单的引号?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-20 17:28:42

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

票数 1
EN

Stack Overflow用户

发布于 2018-09-20 17:26:02

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

https://www.digitalocean.com/community/tutorials/how-to-format-text-in-python-3#multiple-lines

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52430202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档