问题标签 [pypeg]

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 回答
164 浏览

python - pyPEG - 由 `flag()` 函数识别的数据被 `compose()` 函数错误地返回

我处于需要解析旧格式的情况。我想做的是编写一个能够识别格式并将其转换为更易于使用的对象的解析器。

我设法解析输入,问题是当我想将它转换回字符串时。总结一下:当我将 my 的结果parse()作为参数传递给我的compose()方法时,它不会返回正确的字符串。

这是输出和源代码。我是 peg 的初学者,我有什么误解吗?请注意,我(126000-147600,3);在我的初始字符串中,而在它-前面的组合字符串中。

输出:

Python源代码:

0 投票
1 回答
501 浏览

python - pyPEG2 解析换行符

我正在尝试使用pyPEG2将 MoinMoin 标记转换为 Markdown,在某些情况下我需要注意换行符。但是,我什至无法让我的换行符解析测试工作。我是 pyPEG 新手,我的 Python 生锈了。请多多包涵。

这是代码:

这导致:

就好像 pypeg 在 \n 之后插入了一个空行。

尝试其他选项,例如

并且它们的各种组合不会改变错误消息(尽管我认为我没有尝试所有组合)。更改Newline为子类str而不是List也不会更改错误。

更新

我发现 pypeg 在解析它之前剥离了换行符:

运行此结果:

如果我覆盖Newline'parse方法,我什至看不到换行符。它得到的第一件事是“a”。这与我在其他地方看到的一致。pypeg 去除所有前导空格,即使您指定contiguous.

所以,这就是正在发生的事情。不知道该怎么办。

0 投票
1 回答
209 浏览

python - 无法使用类似 Python 的语法解析函数声明

我正在使用pyPEG来解析函数的声明。目前我有这个写:

例如,如果我这样做:

我希望f.params包含ab作为参数。反而:

只有b被发现。为什么是b唯一发现的符号?

0 投票
1 回答
193 浏览

python - pypeg 不能用列表组成语法?

这引发了一个compose错误。

我只能通过使用虚拟类绕过它:

现在它组成正确。

这里有什么问题?

0 投票
1 回答
226 浏览

python - 如何匹配pyPEG中的无序事物?

我有以下文件:

每种水果都有一个与之匹配的类:

我必须匹配每个未排序的水果,我无法预先确定订单是什么。如何设置FruitBasket语法来匹配它们?

ps:水果其实是复杂的规则,每个水果类型代表不同的代码块,比如函数、原型、全局变量等。

0 投票
1 回答
116 浏览

python - 在枚举(pypeg)中使用美元符号?

我想使用pypeg$f匹配表单的类型, $c, ... ,所以我尝试将其放入如下:$dEnum

但是,这失败了:

我也试过用替换$x\$x转义这个$角色。我还尝试预先添加r"\$x",希望它将其视为正则表达式对象。这些组合似乎都不起作用并给出相同的错误消息。我如何让它与我给出的例子相匹配?

0 投票
1 回答
144 浏览

python - pyPEG2 给出错误的结果

我用 pyPEG2 创建了语法,用于解析以下语句:

A爱B,B恨A,A恨B,A爱D,B爱C

下面是我的代码:

但是,当我尝试执行以下操作时:

我得到:

如果我更改此声明:

没有错误,但由于某些原因错过了最后一个块:

那么我做错了什么,文档描述得很好,但无法真正找到我在那里犯的错误。

希望有人可以帮助解决这个问题。提前致谢!!!

0 投票
1 回答
114 浏览

python - pyPEG 中的替换函数

如何替换 pyPEG 中的某些单词?例如我有句子

约翰踢足球

我想将John替换为Bob并将其组合为:

鲍勃踢足球

输出:

0 投票
1 回答
241 浏览

c++ - 在 C++ 源文件中每个函数定义的开头添加一个宏调用

我想在我的 c++ Visual Studio 2015 项目中的每个函数的开头添加一行代码。

在每个函数中手动添加一行需要几个月的时间。有没有快速的方法或工具来解决这个问题?

函数示例有:

我需要处理所有这些函数定义

样本:

我找到了类似的答案来解释正则表达式、方面编程、__pender。由于我是初学者,很难理解这些概念。

期望是:我想提供工作区文件夹的路径,工具将获取其中的所有 cpp 文件并在所需位置添加宏。

如果此工具不存在,请指导是否可以使用.net、java或python等任何技术构建类似的工具。

0 投票
1 回答
49 浏览

python - 如何在 PyPEG 中处理所有可能的 C 类块注释样式

在放弃简约之后,我尝试了 PyPEG。我已经取得了更大的成功,因为我已经实现了最初的目标,但似乎无法正确处理评论。

我已将问题提炼为以下代码。

您可以看到,如果块注释前面有代码(测试用例 4 和 5),则并非所有测试用例都有效,然后生成 Line 而不是 BlockComment。

有没有办法让 PyPEG 自己做到这一点,或者我需要对行进行后处理以找到存在于多行中的 BlockComments。