gpt4 book ai didi

ruby - Parslet:SystemStackError:堆栈级别太深

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:09 32 4
gpt4 key购买 nike

我正在研究一种新的编程语言 rip ,而且我无法找到一些无限循环的底部。有没有办法在每个规则被调用时打印出来,这样我就可以看到递归的规则?我试过在脑海中遍历代码,但我就是看不到它。任何帮助将不胜感激。

最佳答案

充实Raving Genius’s answer :

打补丁的方法其实就是Parslet::Atoms::Context#lookupView it on GitHub (permalink to current version)。在您自己的代码中,您可以修补该方法以像这样打印 obj:

class Parslet::Atoms::Context
def lookup(obj, pos)
p obj
@cache[pos][obj.object_id]
end
end

在您对解析器调用 parse 之前的任何时间运行该代码,它将生效。示例输出:

>> parser = ConsistentNewlineTextParser.new
=> LINES
>> parser.parse("abc")
LINES
(line_content:LINE_CONTENT NEWLINE){0, } line_content:LINE_CONTENT
(line_content:LINE_CONTENT NEWLINE){0, }
line_content:LINE_CONTENT NEWLINE
LINE_CONTENT
WORD
\\w{0, }
\\w
\\w
\\w
\\w
NEWLINE
dynamic { ... }
FIRST_NEWLINE
'? '
'
'?
'
'
'
LINE_CONTENT
=> {:line_content=>"abc"@0}

关于ruby - Parslet:SystemStackError:堆栈级别太深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15562362/

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