gpt4 book ai didi

parsing - 固定并恢复.bnf中的内容(解析)

转载 作者:行者123 更新时间:2023-12-05 00:48:49 24 4
gpt4 key购买 nike

我已经在互联网上进行了广泛的搜索(至少现在已经进行了半天),但似乎找不到所需的答案。

目前,我正在尝试为具有自定义语言支持的IntelliJ-Plugin创建.bnf-file

一些教程提到了{pin=1}{pin=2}{recoverWhile=xyz}的存在,但是我没有找到关于它们的用法的任何真正解释,是否还有其他我应该知道的事情(也许{pin=3}也存在?)。

那么,有人可以告诉我这些标志,方法的确切含义是什么,以及如何在我的.bnf中使用它们?

感谢您的帮助和最诚挚的问候,
福克斯

最佳答案

这些属性在这里说明:

https://github.com/JetBrains/Grammar-Kit/blob/master/HOWTO.md#22-using-recoverwhile-attribute
https://github.com/JetBrains/Grammar-Kit/blob/master/TUTORIAL.md

但是用法并非微不足道。一个不错的主意是使用Live Preview来玩。

我的理解:

Pin和restoreWhile属性用于从错误中恢复解析器。

引脚指定成功解析后规则的一部分(按索引还是按字面值),该规则视为成功。
在示例中:

expr ::= expr1 "+" expr2 {pin=1}

如果匹配expr1,则整个规则将被视为成功,并且解析器将尝试与其余规则匹配。

如果pin = 2,则该规则在匹配“+”之后将被视为成功,如果expr1或“+”不匹配,则该规则将失败。

RecoverWhile的属性指定在解析规则后要跳至的位置。与其成功无关。
例如
{recoverWhile=expr_recover}
expr_recover ::= !(";" | ".)

将跳过“;”之前的所有输入或者 ”。”。 IE。解析器将开始匹配“;”中的下一个规则或者 ”。”。

关于parsing - 固定并恢复.bnf中的内容(解析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48701510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com