加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

解析 – perl6语法,错误报告

发布时间:2020-12-15 21:16:40 所属栏目:大数据 来源:网络整理
导读:如果语法不匹配,有没有办法让perl6生成错误消息?或者至少返回它处理的最后一个数据的位置?如果从解析器获得的所有内容都是“不匹配”,则很难修复语法错误. 解决方法 如果您的重点是为语法用户生成消息,请参阅 Generating Good Parse Errors from a Parser
如果语法不匹配,有没有办法让perl6生成错误消息?或者至少返回它处理的最后一个数据的位置?如果从解析器获得的所有内容都是“不匹配”,则很难修复语法错误.

解决方法

如果您的重点是为语法用户生成消息,请参阅 Generating Good Parse Errors from a Parser和 Grammar::ErrorReporting.

这个答案的其余部分是关于调试的.

首先,您可以在Perl 6规则(或令牌或正则表达式)中嵌入任意闭包(代码).只需在规则中间输入{您的代码就在这里}.所以你可以在有助于调试的地方撒上{say …}语句. (注意$/及其亲属$0,$1等和命名子捕获$< foo>等会自动更新,以便在进入之前立即引用当前Match对象及其与封闭规则对应的子捕获关闭,这样你就可以反省正则表达式中匹配的进展情况.)

但是有更好的选择.

您使用的是“电池包含”Rakudo Star发行版吗? (除非你有充分的理由不这样做,否则你应该这样做.)如果是这样,你可以添加使用Grammar :: Tracer的行; (如http://www.jnthn.net/papers/2011-yapceu-grammars.pdf中的幻灯片所述)获得完整的解析跟踪.

我个人的偏好是使用Rakudo调试器,它提供Grammar :: Tracer所做的一切以及更多(包括正则表达式和语法在内的所有Perl 6代码的单步执行,断点等).调试器在video中引入.

如果您还有其他问题,我建议您访问始终友好的IRC channel #perl6.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读