问题标签 [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.

0 投票
1 回答
1512 浏览

ply - 用于字符串的 flex (python PLY) 正则表达式

我正在使用 python 模块 PLY 来编写解析器,并且我正在实施。我有一个简单的规则来检测字符串:

当抛出词法分析器错误时,我有这个:

当我向解析器提供以下输入时:

作为回报,我得到了回报:

我的问题是:

1)为什么我不解析这个字符串?看来我的正则表达式应该正确处理这个字符串。

2)我该如何解决这个问题?

编辑:

我把问题缩小了一点。以下字符串本身会引发非法的词法分析器输入错误:

0 投票
3 回答
1371 浏览

python - 带有可变数据的正则表达式 - ply.lex

我正在使用 python 模块ply.lex编写词法分析器。我得到了一些用正则表达式指定的标记,但现在我卡住了。我有一个list of Keywords应该是的人tokendata是一个包含大约 1000 个关键字的列表,这些关键字应该都被识别为一种关键字。这可以是例如:_Function1 _UDFType2等等。列表中的所有单词都由空格分隔,就是这样。我只是想让词法分析器识别这个列表中的单词,这样它就会返回一个类型为“KEYWORD”的标记。

所以我试图将变量添加到该正则表达式中,但它没有用。我总是得到: No regular expression defined for rule 't_KEYWORD'

先感谢您!约翰

0 投票
5 回答
4239 浏览

python - 如何防止 PLY 中的表重新生成

我在命令行应用程序中使用 PLY,我将其打包为 Python 鸡蛋,通过pip. 每次我从命令行运行脚本时,都会看到以下消息:

此外,parser.out 和 parsetab.py 文件被写入调用脚本的目录。是否有某种方法可以将这些文件与应用程序一起发送,以便它不会每次都重新生成表?

0 投票
0 回答
55 浏览

grammar - 分解 LALR 语法

可能重复:
Python/YACC:解决移位/减少冲突

我正在尝试使用 Ply 创建一个解析器,它实现了一个像 Yacc 这样的 LALR(1) 解析器。但是,我遇到了困难的减少/减少冲突。据我所知,我的语法没有歧义,相反,冲突源于 LALR(1) 解析器的有限前瞻。我猜A A是遇到问题的时候会出现问题,因为解析器需要知道是否有第三个token来决定是否归约t1。那么如何将其分解为只需要单个标记前瞻的语法呢?

这是 Ply 调试输出中的相关状态,尽管我不太了解它。

0 投票
1 回答
457 浏览

python - 如何创建用于识别 CR 的层规则?

我在 PLY 词法分析器中无法区分 \r (0x0d) 和 \n (0x0a)。

一个最小的例子是以下程序

现在创建一个文件 foo 如下:

验证它看起来没问题:

现在我假设我会得到一些 CR 和一些 LF 令牌,但是:

原来我只得到 LF 代币。我想知道为什么会发生这种情况,以及我应该怎么做。

这是 Ubuntu 12.04 上的 Python 3.2.3

0 投票
1 回答
248 浏览

python-2.7 - 在 json 对象的字符串化列表上使用 ply.lex

我有一个字符串化的 json 对象的 python 列表,我已经部分地对其进行了分析。

但是我留下了诸如“u'Grimsby'”或“u'Amsterdam'”之类的标记,并且我正在努力摆脱前面的u,而不会损坏实际上应该以“u”开头的单词标记。

所以我希望有人能帮我写一个

或一个

这将安全地摆脱这些“你”

谢谢你的帮助。

0 投票
2 回答
730 浏览

python - 用于解析到行尾的词法分析器

如果我有一个关键字,一旦遇到关键字,我怎么能得到它来获取该行的其余部分并将其作为字符串返回?一旦遇到行尾,返回该行上的所有内容。

这是我正在查看的行:

因此,当词法分析器遇到描述时,我希望“这是我要收集的其余文本”作为字符串返回

我定义了以下内容,但似乎引发了错误:

这是返回的错误的一部分:

最后,如果我想要这个功能用于多个令牌,我该如何实现呢?

谢谢你的时间

0 投票
1 回答
351 浏览

python - Python PLY Lex 歧义

我对令牌级别的歧义有疑问。

问题看起来像这样。我的代码看起来像这样,因此令牌 t_UN1 具有更高的优先级。

我想实现这一点,例如。字符串:NS_XYZ 被标识为“IDENTIFIER”,被空格包围的单个 NS_ 被标识为“UN_1”。

我该如何处理?目前字符串 NS_XYZ 被简单地分成两个标记 UN1 和 IDENTIFIER

0 投票
2 回答
378 浏览

python - NoneType 错误,使用 ply 中的 lex.lex

我正在尝试使用 ply 并使用该库中的 lex.lex 解析单词/短语列表。

我之前在单词列表中使用过 lex.lex,它工作得很好,只是使用 for 循环输入到词法分析器中。

但我不断收到以下错误

我这次尝试使用 lex 的列表是解析为 json 的,据我所知,唯一的区别是,与之前确实有效的 lexing 不同?

谢谢你的帮助。

0 投票
2 回答
1284 浏览

python - Pyparsing 是否支持上下文相关语法?

如果我有不正确的术语,请原谅我;也许仅仅用“正确”的词来描述我想要的就足以让我自己找到答案。

我正在开发 ODL(对象描述语言)的解析器,据我所知,这是一种神秘的语言,现在只有 NASA PDS(行星数据系统;这是 NASA 向公众提供其数据的方式)使用。幸运的是,PDS 终于转向 XML,但我仍然必须为在截止日期前落下的任务编写软件。

ODL 以类似以下方式定义对象:

我正在尝试使用 编写解析器pyparsing,并且在进行上述构造之前我做得很好。

我必须创建一些规则,以确保 OBJECT 行的右侧值与 END_OBJECT 的 RHV 相同。但我似乎无法将其纳入pyparsing规则。我可以确保两者都是语法上有效的值,但我不能采取额外的步骤来确保值相同。

  1. 我的直觉是否正确,这是一种上下文相关的语法?这是我应该用来描述这个问题的短语吗?
  2. 无论是理论上的哪种语法,都pyparsing能够处理这种结构吗?
  3. 如果pyparsing无法处理它,是否有另一个 Python 工具能够这样做?怎么样( /ply的 Python 实现)?lexyacc