使用带有iPython/Jupyter的帘布层

使用带有iPython/Jupyter的帘布层,python,ipython,jupyter-notebook,ply,Python,Ipython,Jupyter Notebook,Ply,我正在从事一个使用ply解析工具的项目。我需要在iPython中实现该项目,但正如本文所示 ,ply导致工具出现问题。因此,我想知道是否有解决问题的方法或解决办法,使我能够同时使用ply和笔记本工具。也许响应有点晚,但我只是遇到了同样的问题并设法找到了解决办法 要构建lexer,PLY需要一个名为\uuuuu file\uuuu的变量。因此,在调用lex.lex()之前,必须将\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

我正在从事一个使用ply解析工具的项目。我需要在iPython中实现该项目,但正如本文所示
,ply导致工具出现问题。因此,我想知道是否有解决问题的方法或解决办法,使我能够同时使用ply和笔记本工具。

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

要构建lexer,PLY需要一个名为
\uuuuu file\uuuu
的变量。因此,在调用
lex.lex()
之前,必须将
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

例如:

[...]
__file__ = "My_Notebook.ipynb"
lexer = lex.lex()
[...]
如果您正在使用一个类(如下所示):

此外,正如第4.15节末尾的所指出的,您不应该为每个笔记本文件定义多个lexer

现在,要在IPython/Jupyter笔记本中使用
yacc
,您必须这样称呼它:

parser = yacc.yacc(write_tables=False)

从你链接到的问题来看:“Ply坚持语法是一个模块,这意味着它必须在一个文件中。”IPython笔记本不是一个文件。您可以尝试将语法保存为系统中的某个位置的文件,并将其导入笔记本中,我想。@AkshatMahajan说得很清楚,笔记本是一个文件(
.ipynb
),而不是一个模块。
parser = yacc.yacc(write_tables=False)