gpt4 book ai didi

Grammar.parse 似乎永远循环并使用 100% CPU

转载 作者:行者123 更新时间:2023-12-02 16:46:48 26 4
gpt4 key购买 nike

转发自 the #perl6 IRC channel, by jkramer, with permission

我正在研究语法并尝试解析 ini 样式文件,但不知何故 Grammar.parse 似乎永远循环并使用 100% CPU。你知道这里出了什么问题吗?

grammar Format {
token TOP {
[
<comment>*
[
<section>
[ <line> | <comment> ]*
]*
]*
}

rule section {
'[' <identifier> <subsection>? ']'
}

rule subsection {
'"' <identifier> '"'
}

rule identifier {
<[A..Za..z]> <[A..Za..z0..9_-]>+
}

rule comment {
<[";]> .*? $$
}

rule line {
<key> '=' <value>
}

rule key {
<identifier>
}

rule value {
.*? $$
}
}

Format.parse('lol.conf'.IO.slurp)

最佳答案

token TOP*可以解析空字符串的子正则表达式上的量词(因为 <comment> 和包含 <section> 的组都有自己的 * 量词)。

如果内部子正则表达式与空字符串匹配,它可以无限次匹配而无需前进光标。目前,Perl 6 没有针对此类错误的保护措施。

在我看来,您可以将代码简化为

token TOP {
<comment>*
[
<section>
[ <line> | <comment> ]*
]*
}

(不需要 [...]* 的外部组,因为最后一个 <comment> 也匹配各部分之前的注释。

关于Grammar.parse 似乎永远循环并使用 100% CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800790/

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