首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python PLY -这个语法有什么问题吗?

Python PLY -这个语法有什么问题吗?
EN

Stack Overflow用户
提问于 2011-10-07 03:13:49
回答 1查看 295关注 0票数 2

我试着用Python PLY做一个简单的表达式解析器,但是我不能让它工作。代码是available at bitbucket,但有问题的部分是:

首先,定义:

代码语言:javascript
运行
复制
def p_expr_minus(p):
    '''expr :   expr MINUS term'''
    p[0] = p[1]-p[3]

代码语言:javascript
运行
复制
def p_term_divide(p):
    '''term :   term DIVIDE factor'''
    p[0] = p[1]/p[3]

似乎是颠倒的,并给我结果: 3-9 =6和2/8= 4。

其次,括号表达式factor: ( expr )不起作用。特别是,这一部分:

代码语言:javascript
运行
复制
def p_factor_brackets(p):
    '''factor : OBRACKET expr CBRACKET'''
    p[0] = p[2]

不能正常工作。解析诸如(9+7)之类的表达式会引发以下问题:

代码语言:javascript
运行
复制
TypeError: unknown text at ')'

这些错误的来源是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-07 16:59:15

您的解析器很好,但是您在main()方法中做了一些愚蠢的事情:

代码语言:javascript
运行
复制
def main():
    data = "3*4+5*6-10"
    data = raw_input()
    print yacc.parse(data[::-1])

您正在向解析器提供相反的字符串:data[::-1]!难怪(9+7)会给出一个错误,它被解析器视为)7+9(。只需传递真正的data,就可以了。

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

https://stackoverflow.com/questions/7679263

复制
相关文章

相似问题

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