Ruby Parslet:SystemStackError:堆栈级别太深
我正在开发一种新的编程语言,但我很难找到一些无限循环的底部。有没有一种方法可以在调用每个规则时打印出来,这样我就可以看到递归的规则?我试着在脑海中浏览代码,但我就是看不到。任何帮助都将不胜感激。我想出来了:编辑Ruby Parslet:SystemStackError:堆栈级别太深,ruby,parslet,Ruby,Parslet,我正在开发一种新的编程语言,但我很难找到一些无限循环的底部。有没有一种方法可以在调用每个规则时打印出来,这样我就可以看到递归的规则?我试着在脑海中浏览代码,但我就是看不到。任何帮助都将不胜感激。我想出来了:编辑Parslet::Atom::Context#lookup以输出obj参数将按调用的方式显示每个规则。我想出来了:编辑Parslet::Atom::Context#lookup以输出obj参数将按调用的方式显示每个规则调用。以充实: 修补的方法实际上是Parslet::Atoms::Con
Parslet::Atom::Context#lookup
以输出obj
参数将按调用的方式显示每个规则。我想出来了:编辑Parslet::Atom::Context#lookup
以输出obj
参数将按调用的方式显示每个规则调用。以充实:
修补的方法实际上是Parslet::Atoms::Context#lookup
。(). 在您自己的代码中,您可以修补该方法以打印obj
,如下所示:
class Parslet::Atoms::Context
def lookup(obj, pos)
p obj
@cache[pos][obj.object_id]
end
end
在解析器上调用parse
之前,随时运行该代码,它就会生效。样本输出:
>parser=ConsistentNewlineTextParser.new
=>行
>>parser.parse(“abc”)
线
(行内容:行内容换行){0,}行内容:行内容
(行内容:行内容换行){0,}
行内容:行内容换行
行内容
单词
\\w{0,}
\\w
\\w
\\w
\\w
新线
动态{…}
第一新线
'? '
'
'?
'
'
'
行内容
=>{:line_content=>“abc”@0}
要充实:
修补的方法实际上是Parslet::Atoms::Context#lookup
。(). 在您自己的代码中,您可以修补该方法以打印obj
,如下所示:
class Parslet::Atoms::Context
def lookup(obj, pos)
p obj
@cache[pos][obj.object_id]
end
end
在解析器上调用parse
之前,随时运行该代码,它就会生效。样本输出:
>parser=ConsistentNewlineTextParser.new
=>行
>>parser.parse(“abc”)
线
(行内容:行内容换行){0,}行内容:行内容
(行内容:行内容换行){0,}
行内容:行内容换行
行内容
单词
\\w{0,}
\\w
\\w
\\w
\\w
新线
动态{…}
第一新线
'? '
'
'?
'
'
'
行内容
=>{:line_content=>“abc”@0}
自动检测无休止的循环,并退出正在重复而不消耗任何内容的报告表达式
请参阅以获取示例。自动检测无休止的循环,并退出正在重复而不消耗任何内容的报告表达式
有关示例,请参见