问题标签 [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.
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
让他们来!
parsing - 使用 PetitParser 在 Smalltalk 字符串中查找标记
我要解析
就像在 findTokens
但无法弄清楚如何使用 PetitParser、delimitedBy: 和 separatorBy: 并没有帮助我我试过
但显然没有奏效
parsing - 如何使用 PetitParser 解析以关键字开头的标识符?
我想通过使用 PetitParser 来解析编程语言中的标识符。
要求之一是标识符的名称不是关键字(例如null
),因此这null
不是有效的标识符。
对于这种情况,我能想到的最小解析器是:
但是,如果输入以关键字开头,则会失败:
你有什么建议来解决这个问题吗?谢谢!
smalltalk - 使用 PetitParser 定义左关联解析器
在http://pharobooks.gforge.inria.fr/PharoByExampleTwo-Eng/latest/中,定义了一个 ExpressionGrammar。但是,它是右结合的
我怎样才能使它左关联,以便
结果是
?
smalltalk - 在 Pharo 中使用 PetitParser 解析注释
有没有比这更简单的方法来解析 1 行注释?
我特别不确定 (#newline asParser) 和 #copyWithout: 的重复。
在卢卡斯的回答之后,我想出了更简单的以下解决方案:
smalltalk - PetitParser 解析规则如何发出错误信号?
我想要一个只能识别 0 到 32767 之间数字的解析规则。我尝试了类似的方法:
但我不知道该为 ??? 写什么。我想过返回一个 PPFailure,但这需要知道流的位置。
smalltalk - 自引用 PetitParser 的 PPCompositeParsers
我有一个编程语言语法我想在 PPCompositeParser 的几个子类中展开(例如,一个类将处理指令,另一个类将处理表达式,另一个类具有句柄程序结构)。我想这样做是为了避免获得一个包含数十个实例变量的大类。
我的问题是这些子语法有循环依赖:结构语法引用语句语法的'statement'规则,引用表达式语法的'expression'规则,引用结构语法的'subroutineName'(关闭依赖循环)。我尝试了一种简单的方法,例如,在表达式语法中使用 #subroutineName 方法,如下所示:
但由于无限递归(显然),初始化失败。
为了解决这个问题,我创建了一个 PPDeferedParser:
这使得之前的 #subroutineName 看起来像:
这似乎可行,但我想知道是否还有其他解决方案。
pharo - 禁止令牌解析额外的空格
现在的想法是这样的:在Java中octalIntegerLiteral
我有一个规则
但我想得到一个数字作为令牌,所以我使用了:
问题是它开始解析字符串,例如:0777 L
. 这可以很容易解决,还是我应该处理它是子类?
pharo - PetitParser 不是分布式的?
PetitParser 中的规则是可分配的吗?
有以下规则:
如果我将它们更改为:
then0777L
不再被解析。它应该匹配octalNumeral , (integerTypeSuffix optional)
或在新版本octalIntegerLiteral , (integerTypeSuffix optional)
中,但没有发生。
initialization - 自定义实例变量并使用 PetitParser 进行初始化
据我所知,PetitParser使用同名的生产方法初始化每个实例变量。应该怎么做,例如添加一个自定义实例变量并在initialize
方法中对其进行初始化?