error-recovery

    0热度

    1回答

    我写过一个叫LimitedInputStream的课。它包装现有的输入流以将从中读取的字节数限制为指定的长度。这意味着作为替代: byte[] data = readAll(length); InputStream ins = new ByteArrayInputStream(data); 这需要额外的缓冲区。 这是类: public static class LimitedInputStr

    1热度

    1回答

    我觉得解析器发电机是一个很不错的工具,在你的编程工具包使一些玩耍后,我写我自己只是为了了解事情做得更好,它竟然是比我预想的要好所以我一直坚持下去。 有一件事情一直缠着我最近虽然是错误报告和恢复。我做得不好。我知道一种方法是令牌同步,但线索似乎停在那里。除了滚动你自己的递归下降解析器,并包括各种启发式算法,在解析器生成器中处理错误报告和错误恢复的一些通用目的是什么?

    1热度

    2回答

    我有一个ANTLR固定节点,而不是错误的节点产生,使用C靶Java解析器和它工作得很好。问题是我也希望它解析错误的代码并产生一个有意义的AST。如果我为它提供一个带有一个导入的最小Java类,之后缺少一个分号,它会生成两个“树错误节点”对象,其中导入类的令牌和令牌应该是。 但由于它正确地解析下面的代码,并产生正确的节点为这个编码它必须从错误通过将分号或通过重新同步恢复。有没有办法让antlr反映它

    2热度

    1回答

    我发现我可以在语法规则中使用'错误'作为错误恢复机制。所以如果出现错误,解析器必须放弃当前行并从下一行继续解析。从野牛手册实现这个例子可能是这样的: stmts: exp |stmts exp | error '\n' 但我不能使用它;因为我必须让flex在我的scannar中忽略'\ n',所以表达式并不局限于用一行表示。如何解析器 - 遇到错误时 - 继

    0热度

    2回答

    我devloping我自己的编译器,我有错误恢复设计 在java语法的恐慌模式的问题。 我想到了多种解决方案,但真正的问题: 我怎么能做到这一点与野牛C++? 我这样做: 包2 进口的java.lang。*; 误差必须消耗到第一半结肠和这与规则运行正确 package_rule:包错误“;” 但如果我写这个代码: 封装2 进口的java.lang * 等级Y {无效方法(){INT米} } 我需要

    1热度

    1回答

    我今天下载了Rhino Security,并开始进行一些测试。几个独立完美运行的开始出现错误之后,会故意引发异常。下面是测试: [Test] public void EntitiesGroup_IfDuplicateName_Error() { _authorizationRepository.CreateEntitiesGroup("Admininstrators");

    1热度

    1回答

    序言 我已经写了GLR分析器,错误恢复。当它遇到错误时,它会分裂成以下几种选择: 将期望的元素插入到输入中(可能是用户错过了它),然后照常进行。 用期望的元素替换错误的元素(可能是用户刚刚输入错误)并照常进行。 跳过错误的元素,如果下一个元素也是错误的,则转到#2。 但是,如果输入有很多错误(例如,用户错误地将JPEG文件提供给解析器),一些替代方法呈指数增长。 例 这样相应于下列语法解析器: P