问题标签 [pegkit]

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

objective-c - ParseKit 动作中的自定义对象

我对向 ParseKit 语法添加动作的能力非常感兴趣。令人惊讶的是,关于这些操作中可用的内容的文档很少。假设我有两个规则,例如:

这显然不是一个完整的语法,但将作为一个例子。解析时,我想“返回”CreateTableStmt具有某些属性的对象。如果我正确理解该工具,我会在规则中添加一个操作,然后将其推送到组件上,该组件将携带它以供下一个规则处理或使用。

例如,它看起来像:

然后,当所有内容都被解析时,我可以将根对象从堆栈中取出,它是语法的完全实例化的自定义表示。如果我没记错的话,有点像构建 AST。然后,我可以使用该表示进行操作,而不是使用传入的字符串。

我的问题是如何查看它是否匹配('TEMP' | 'TEMPORARY'),以便设置值。这些令牌在堆栈上吗?有没有比弹回“CREATE”并查看我们是否通过它更好的方法。我是否应该在每场比赛中弹回堆栈底部?

另外,如果我的规则是

假设在匹配规则之前不会调用操作是否正确?因此,在这种情况下,将操作调用到堆栈时可能如下所示:

这些是正确的评估吗?是否有其他有关操作的文件?我知道它很大程度上基于 Antlr,但它的细微差别确实会给你带来麻烦。

0 投票
1 回答
50 浏览

parsing - 带有动作的语法期间的解析器堆栈管理

这是与ParseKit Actions 中的自定义对象相关的第二个问题

如果我有一个语法规则,例如:

假设在匹配规则之前不会调用操作是否正确?因此,在这种情况下,将操作调用到堆栈时可能如下所示:

这些是正确的评估吗?是否有其他有关操作的文件?我知道它很大程度上基于 Antlr,但它的细微差别确实会给你带来麻烦。

0 投票
1 回答
94 浏览

objective-c - 用于自定义操作的 PegKit 自定义包含文件

我有自定义对象的操作。我不想每次生成解析器时都复制和粘贴所有#imports。这是否可能与某些@begin或其他指令一起使用。

例如:

这一切都完美生成,但是当尝试编译时,生成的文件显然缺少#import "MyCoolNewObject.h"

0 投票
1 回答
148 浏览

objective-c - Generate classes from grammar rules, objects on parse

Is it possible to generate .m and .h's for any grammar/ rules so that during parsing it creates an object that represents that rule.

So some grammar

could generate a class that is named coolObjName (or some variation) and has a field for the word, and generates the action:

Then a higher level rule such as:

would create a myHigherLevel class that has a coolObjName member and a number, which then adds the action:

Empty tags turn to empty objects and * and + result in arrays.

Is there a tool that can do this or where would I go to create such. (seems super useful and awesome)

0 投票
1 回答
174 浏览

pegkit - 不区分大小写的令牌匹配

是否可以将语法设置为不区分大小写。

例如一个规则:

将匹配check name以及CHECK name

0 投票
1 回答
70 浏览

pegkit - PEGKit 不断尝试规则

假设我有一个规则:

我提供作为输入myCoolToken something else now,它试图将其解析为贪婪地将 myCoolToken 匹配为一个单词,然后点击something并说 uhhh 我期望 EOF,如果我安排规则以便它首先尝试匹配myCoolToken,那么对于该输入来说一切都很好并且完美解析。

我想知道它是否有可能继续尝试该语句中的所有规则以查看是否有效。所以它匹配 Word 失败,返回然后尝试下一条规则。

这是导致问题的实际语法规则:

输入CHECK( CAST( abcd as defy) )导致它失败,即使它是有效的

是否有构造或其他方式使其在放弃之前验证所有规则。

0 投票
1 回答
118 浏览

ios - 暂停/继续解析 PEGKit 解析器?

我有一个从PEGKit创建的解析器(此处的示例项目)。

我想暂停解析,而不停止主线程。由于PEGKit具有无限回溯并且知道光标/头部在输入字符串处的位置,因此应该可以恢复解析。

这将非常有帮助,因此我可以逐步创建解析器。所以解析器必须等待一个 ui 动作,比如按下UIButton.

如何实现或暂停然后恢复解析?


例如,我想在到达某个符号时暂停解析​​。这是在;(分号或EXPRESSIONPARSER_TOKEN_KIND_SEMI_COLON)之后。

所以在令牌之后;应该保存状态,所以我可以从这个位置返回和解析。

代码:

0 投票
1 回答
136 浏览

ios - 匹配 PEGKit 语法中的子字符串

我正在尝试构建一个匹配单词子串的语法并且没有太多。运气。即我尝试匹配成功的文本“an”,但无法匹配“and”的前两个字母

我意识到这是一个基本的例子。

0 投票
1 回答
95 浏览

parsekit - 识别 PEGKit 中的多个新行

我正在学习如何使用 PEGKit,但是在为解析行的脚本创建语法时遇到了问题,即使它们被多个换行符分隔也是如此。我已将问题简化为以下语法:

对我来说,这个简单的语法应该允许每行一个单词,必要时有尽可能多的换行符。但它只允许一个带有可选换行符的单词。有人知道这里有什么问题吗?谢谢你。

0 投票
0 回答
61 浏览

pegkit - PegKit 的 Mscgen 语法

有人知道可以与PegKit一起使用的Mscgen语法的现有语法定义吗?我查看了“res”文件夹,但其中大多数似乎都不起作用。

这是一个示例