无法使用ideon生成PLY lexer

2024-09-29 01:26:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图为我稍后要问的问题创建一个MCVE,但是我遇到了一个问题,我试图使用的在线IDE,ideone。在

如果我在我的本地Python 2.7解释器中运行,下面链接中的代码工作得非常好:

http://ideone.com/DpALEU

但是,在ideone上,我得到的错误是:

ERROR: prog.py:282: No regular expression defined for rule 't_DIRECTIVE'
ERROR: prog.py:286: No regular expression defined for rule 't_REFERENCE'
ERROR: prog.py:291: No regular expression defined for rule 't_UNAME'
ERROR: prog.py:296: No regular expression defined for rule 't_USTRING'
ERROR: prog.py:301: No regular expression defined for rule 't_UFLOAT'
ERROR: prog.py:307: No regular expression defined for rule 't_HEX'
ERROR: prog.py:314: No regular expression defined for rule 't_INTEGER'
ERROR: prog.py:320: No regular expression defined for rule 't_COMMENT'
ERROR: prog.py:324: No regular expression defined for rule 't_ID'
ERROR: prog.py:330: No regular expression defined for rule 't_newline'
Traceback (most recent call last):
  File "prog.py", line 338, in <module>
  File "/usr/lib/python2.7/dist-packages/ply/lex.py", line 901, in lex
    raise SyntaxError("Can't build lexer")
SyntaxError: Can't build lexer

然而,我正在有效地定义我的规则。例如:

^{pr2}$

什么会导致这个错误?在

提前致谢。在


Tags: noinpyfor错误lineerrorrule
1条回答
网友
1楼 · 发布于 2024-09-29 01:26:21

想必ideone使用了-OO优化设置,它删除了所有docstring。因此,lex模块在想要构建扫描仪时找不到docstring。在解析器中也会遇到类似的问题。在

这里有一个难看的解决方法:http://ideone.com/H5rxXK

有一个干净的解决方案由PLY manual推荐(参见下一节8)。在链接之后使用Python的优化模式;由于PLY手册中的HTML错误,“correct”链接当前不起作用)。不幸的是,它产生了a different error,这可能是ideone文件系统虚拟化的结果。在

相关问题 更多 >