gpt4 book ai didi

parsing - 我如何用 peg 语法解析它?

转载 作者:行者123 更新时间:2023-12-02 16:49:18 24 4
gpt4 key购买 nike

我正在尝试使用pegjs创建一个解析器。我需要解析类似的内容:

blah blah START Lorem ipsum 
dolor sit amet, consectetur
adipiscing elit END foo bar
etc.

我在编写规则来捕获从 "START""END" 的文本时遇到了困难。

最佳答案

使用否定先行谓词:

phrase
=(!"START" .)* "START" result:(!"END" .)* "END" .* {
for (var i=0;i<result.length;++i)
// remove empty element added by predicate matching
{result[i]=result[i][1];
}
return result.join("");
}

您需要对 END 和 START 使用否定谓词,因为 pegjs 中的重复是贪婪的。

或者,该操作可以写为

{return result.join("").split(',').join("");}

尽管这依赖于处理嵌套数组时 join 的不必要的记录行为(即它用逗号连接子数组,然后连接它们)。

[更新]处理空元素的更短方法是

phrase
=(!"START" .)* "START" result:(t:(!"END" .){return t[1];})* "END" .* {
return result.join("");
}

关于parsing - 我如何用 peg 语法解析它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230703/

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