问题标签 [ply]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ply - 用于字符串的 flex (python PLY) 正则表达式
我正在使用 python 模块 PLY 来编写解析器,并且我正在实施。我有一个简单的规则来检测字符串:
当抛出词法分析器错误时,我有这个:
当我向解析器提供以下输入时:
作为回报,我得到了回报:
我的问题是:
1)为什么我不解析这个字符串?看来我的正则表达式应该正确处理这个字符串。
2)我该如何解决这个问题?
编辑:
我把问题缩小了一点。以下字符串本身会引发非法的词法分析器输入错误:
python - 带有可变数据的正则表达式 - ply.lex
我正在使用 python 模块ply.lex
编写词法分析器。我得到了一些用正则表达式指定的标记,但现在我卡住了。我有一个list of Keywords
应该是的人token
。data
是一个包含大约 1000 个关键字的列表,这些关键字应该都被识别为一种关键字。这可以是例如:_Function1 _UDFType2
等等。列表中的所有单词都由空格分隔,就是这样。我只是想让词法分析器识别这个列表中的单词,这样它就会返回一个类型为“KEYWORD”的标记。
所以我试图将变量添加到该正则表达式中,但它没有用。我总是得到:
No regular expression defined for rule 't_KEYWORD'
。
先感谢您!约翰
python - 如何防止 PLY 中的表重新生成
我在命令行应用程序中使用 PLY,我将其打包为 Python 鸡蛋,通过pip
. 每次我从命令行运行脚本时,都会看到以下消息:
此外,parser.out 和 parsetab.py 文件被写入调用脚本的目录。是否有某种方法可以将这些文件与应用程序一起发送,以便它不会每次都重新生成表?
grammar - 分解 LALR 语法
可能重复:
Python/YACC:解决移位/减少冲突
我正在尝试使用 Ply 创建一个解析器,它实现了一个像 Yacc 这样的 LALR(1) 解析器。但是,我遇到了困难的减少/减少冲突。据我所知,我的语法没有歧义,相反,冲突源于 LALR(1) 解析器的有限前瞻。我猜A A
是遇到问题的时候会出现问题,因为解析器需要知道是否有第三个token来决定是否归约t1
。那么如何将其分解为只需要单个标记前瞻的语法呢?
这是 Ply 调试输出中的相关状态,尽管我不太了解它。
python - 如何创建用于识别 CR 的层规则?
我在 PLY 词法分析器中无法区分 \r (0x0d) 和 \n (0x0a)。
一个最小的例子是以下程序
现在创建一个文件 foo 如下:
验证它看起来没问题:
现在我假设我会得到一些 CR 和一些 LF 令牌,但是:
原来我只得到 LF 代币。我想知道为什么会发生这种情况,以及我应该怎么做。
这是 Ubuntu 12.04 上的 Python 3.2.3
python-2.7 - 在 json 对象的字符串化列表上使用 ply.lex
我有一个字符串化的 json 对象的 python 列表,我已经部分地对其进行了分析。
但是我留下了诸如“u'Grimsby'”或“u'Amsterdam'”之类的标记,并且我正在努力摆脱前面的u,而不会损坏实际上应该以“u”开头的单词标记。
所以我希望有人能帮我写一个
或一个
这将安全地摆脱这些“你”
谢谢你的帮助。
python - 用于解析到行尾的词法分析器
如果我有一个关键字,一旦遇到关键字,我怎么能得到它来获取该行的其余部分并将其作为字符串返回?一旦遇到行尾,返回该行上的所有内容。
这是我正在查看的行:
因此,当词法分析器遇到描述时,我希望“这是我要收集的其余文本”作为字符串返回
我定义了以下内容,但似乎引发了错误:
这是返回的错误的一部分:
最后,如果我想要这个功能用于多个令牌,我该如何实现呢?
谢谢你的时间
python - Python PLY Lex 歧义
我对令牌级别的歧义有疑问。
问题看起来像这样。我的代码看起来像这样,因此令牌 t_UN1 具有更高的优先级。
我想实现这一点,例如。字符串:NS_XYZ 被标识为“IDENTIFIER”,被空格包围的单个 NS_ 被标识为“UN_1”。
我该如何处理?目前字符串 NS_XYZ 被简单地分成两个标记 UN1 和 IDENTIFIER
python - NoneType 错误,使用 ply 中的 lex.lex
我正在尝试使用 ply 并使用该库中的 lex.lex 解析单词/短语列表。
我之前在单词列表中使用过 lex.lex,它工作得很好,只是使用 for 循环输入到词法分析器中。
但我不断收到以下错误
我这次尝试使用 lex 的列表是解析为 json 的,据我所知,唯一的区别是,与之前确实有效的 lexing 不同?
谢谢你的帮助。
python - Pyparsing 是否支持上下文相关语法?
如果我有不正确的术语,请原谅我;也许仅仅用“正确”的词来描述我想要的就足以让我自己找到答案。
我正在开发 ODL(对象描述语言)的解析器,据我所知,这是一种神秘的语言,现在只有 NASA PDS(行星数据系统;这是 NASA 向公众提供其数据的方式)使用。幸运的是,PDS 终于转向 XML,但我仍然必须为在截止日期前落下的任务编写软件。
ODL 以类似以下方式定义对象:
我正在尝试使用 编写解析器pyparsing
,并且在进行上述构造之前我做得很好。
我必须创建一些规则,以确保 OBJECT 行的右侧值与 END_OBJECT 的 RHV 相同。但我似乎无法将其纳入pyparsing
规则。我可以确保两者都是语法上有效的值,但我不能采取额外的步骤来确保值相同。
- 我的直觉是否正确,这是一种上下文相关的语法?这是我应该用来描述这个问题的短语吗?
- 无论是理论上的哪种语法,都
pyparsing
能够处理这种结构吗? - 如果
pyparsing
无法处理它,是否有另一个 Python 工具能够这样做?怎么样( /ply
的 Python 实现)?lex
yacc