首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >报告与TatSu中一样多的不同语法错误

报告与TatSu中一样多的不同语法错误
EN

Stack Overflow用户
提问于 2021-04-02 16:40:18
回答 1查看 42关注 0票数 0

我正在尝试为一种先由TatSu解析然后再解释的语言实现一个解释器。我希望向我的最终用户提供这样一种功能,即我的解释器可以同时报告语言源代码中包含的尽可能多的潜在错误,包括底层TatSu解析器引发的FailedParse错误。

据我所知,唯一的方法是TatSu只生成一个FailedParse异常,然后停止解析。

有没有一种方法可以包装TatSu解析器,使其恢复对源代码的解析并报告源代码中任何进一步的潜在语法错误?

EN

回答 1

Stack Overflow用户

发布于 2021-04-03 21:48:35

你需要错误恢复。您可以在Web上阅读有关该主题的内容。

TaTsu本身并不做错误恢复,只提供了一些支持。

这就是我们的想法。给定语法的这一部分:

代码语言:javascript
复制
block = {statement ';'}+
statemtent =
    | if_statement
    | expression
    ;

您可以更改语法以添加错误恢复规则。

代码语言:javascript
复制
block = {statement ';'}+
statemtent =
    | if_statement
    | expression
    | statement_error
    ;

statement_error = ->&';' ;  # skip until a semicolon is seen

可以在整个语法中应用相同类型的恢复。

然后,在语义定义中,解析器将为每个xxx_error规则记录一条错误消息。

还有其他方法来安排规则,将“跳过”(->)表达式放在哪里取决于个人喜好。

TatSu可以为错误恢复提供更多支持,它可能会从解决#203开始

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66916662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档