问题标签 [petitparser]

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 投票
2 回答
922 浏览

parsing - 我在哪里可以找到更多使用 PetitParser 的示例?

我正在寻找在测试包中提供的 PArithmeticParser 和 PPLambdaParser 之外使用 PetitParser 的其他示例以及 Lukas 的几篇博客文章?如果有人愿意分享他们的,将不胜感激。

更新:https
://github.com/NicolasPetton/jtalk/blob/master/st/parser.st 更新:https ://github.com/dmatveev/waste/blob/master/wastex.st

让他们来!

0 投票
4 回答
1037 浏览

parsing - 使用 PetitParser 在 Smalltalk 字符串中查找标记

我要解析

就像在 findTokens

但无法弄清楚如何使用 PetitParser、delimitedBy: 和 separatorBy: 并没有帮助我我试过

但显然没有奏效

0 投票
1 回答
144 浏览

parsing - 如何使用 PetitParser 解析以关键字开头的标识符?

我想通过使用 PetitParser 来解析编程语言中的标识符。

要求之一是标识符的名称不是关键字(例如null),因此这null不是有效的标识符。

对于这种情况,我能想到的最小解析器是:

但是,如果输入以关键字开头,则会失败:

你有什么建议来解决这个问题吗?谢谢!

0 投票
2 回答
106 浏览

smalltalk - 使用 PetitParser 定义左关联解析器

http://pharobooks.gforge.inria.fr/PharoByExampleTwo-Eng/latest/中,定义了一个 ExpressionGrammar。但是,它是右结合的

我怎样才能使它左关联,以便

结果是

?

0 投票
1 回答
331 浏览

smalltalk - 在 Pharo 中使用 PetitParser 解析注释

有没有比这更简单的方法来解析 1 行注释?

我特别不确定 (#newline asParser) 和 #copyWithout: 的重复。

在卢卡斯的回答之后,我想出了更简单的以下解决方案:

0 投票
1 回答
145 浏览

smalltalk - PetitParser 解析规则如何发出错误信号?

我想要一个只能识别 0 到 32767 之间数字的解析规则。我尝试了类似的方法:

但我不知道该为 ??? 写什么。我想过返回一个 PPFailure,但这需要知道流的位置。

0 投票
1 回答
100 浏览

smalltalk - 自引用 PetitParser 的 PPCompositeParsers

我有一个编程语言语法我想在 PPCompositeParser 的几个子类中展开(例如,一个类将处理指令,另一个类将处理表达式,另一个类具有句柄程序结构)。我想这样做是为了避免获得一个包含数十个实例变量的大类。

我的问题是这些子语法有循环依赖:结构语法引用语句语法的'statement'规则,引用表达式语法的'expression'规则,引用结构语法的'subroutineName'(关闭依赖循环)。我尝试了一种简单的方法,例如,在表达式语法中使用 #subroutineName 方法,如下所示:

但由于无限递归(显然),初始化失败。

为了解决这个问题,我创建了一个 PPDeferedParser:

这使得之前的 #subroutineName 看起来像:

这似乎可行,但我想知道是否还有其他解决方案。

0 投票
1 回答
54 浏览

pharo - 禁止令牌解析额外的空格

现在的想法是这样的:在Java中octalIntegerLiteral我有一个规则

但我想得到一个数字作为令牌,所以我使用了:

问题是它开始解析字符串,例如:0777 L. 这可以很容易解决,还是我应该处理它是子类?

0 投票
1 回答
70 浏览

pharo - PetitParser 不是分布式的?

PetitParser 中的规则是可分配的吗?

有以下规则:

如果我将它们更改为:

then0777L不再被解析。它应该匹配octalNumeral , (integerTypeSuffix optional)或在新版本octalIntegerLiteral , (integerTypeSuffix optional)中,但没有发生。

0 投票
1 回答
87 浏览

initialization - 自定义实例变量并使用 PetitParser 进行初始化

据我所知,PetitParser使用同名的生产方法初始化每个实例变量。应该怎么做,例如添加一个自定义实例变量并在initialize方法中对其进行初始化?