首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合使用Ply和iPython/Jupyter

结合使用Ply和iPython/Jupyter
EN

Stack Overflow用户
提问于 2016-04-04 08:55:19
回答 1查看 782关注 0票数 1

我正在做一个使用ply解析工具的项目。我需要用iPython实现这个项目,但正如在这篇文章Problems with PLY LEX and YACC中所看到的,ply导致了这个工具的问题。因此,我想知道是否有修复或解决这个问题的方法,使我可以同时使用ply和notebook工具。

EN

回答 1

Stack Overflow用户

发布于 2018-02-16 10:12:47

也许回应有点晚了,但我刚刚遇到了同样的问题,并设法找到了解决办法。

要构建lexer,PLY需要一个名为__file__的变量。因此,在调用lex.lex()之前,必须将__file__设置为笔记本文件的名称。

例如:

代码语言:javascript
复制
[...]
__file__ = "My_Notebook.ipynb"
lexer = lex.lex()
[...]

如果你正在使用一个类(遵循这个example):

代码语言:javascript
复制
class MyLexer(object):
    # [...]
    # lots and lots of token declarations
    # [...]

    # Build the lexer
    def build(self,**kwargs):
        self.lexer = lex.lex(module=self, **kwargs)

my_lexer = MyLexer()
__file__ = "My_Notebook.ipynb"
my_lexer.build()

此外,您不应该为每个笔记本文件定义多个词法分析器,正如第4.15节末尾的PLY documentation所指出的那样。

现在,要在IPython/Jupyter Notebook中使用yacc,您必须这样调用它:

代码语言:javascript
复制
parser = yacc.yacc(write_tables=False)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36393114

复制
相关文章

相似问题

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