use*_*725 4 grammar parsing raku
以下 Raku 程序定义了一个语法Parser,然后尝试使用它来解析字符串baa。然而,程序执行时间太长。有没有办法限制用于解析的执行时间量,以便解析可以被视为已超出所需的限制并超时\xe2\x80\xaf?
grammar Parser\n {\n token TOP { <S> }\n token S { \'\' | <S> <S> | \'a\' <S> \'b\' | <S> \'a\' | \'b\' <S> \'b\' }\n }\n\nsub MAIN()\n {\n say Parser.parse( \'baa\' ).Bool ; # Would like True, False, or Timeout\n } # end sub MAIN\nRun Code Online (Sandbox Code Playgroud)\n另外,是否有计划让Raku实现ANTLR的自适应 LL(*)解析?ANTLR 4.11.1 版本的代码生成目标包括 Java、Python 等,但不包括 Raku。
\n目前除了退出进程之外,没有其他方法可以停止解析其他进程。如果您的情况没问题,那么您可以执行以下操作:
start {
sleep 10; # however much time you want it to give
note "Sorry, it took to long";
exit 1;
}
Run Code Online (Sandbox Code Playgroud)
如果这不是一个选项,则上述主题有几种变体,例如将语法解析放入块中start并等待承诺被遵守或打破。