java - 如何根据 JavaCC 中的解析异常创建特定的错误消息

标签 java javacc parseexception

我正在制作一个 JavaCC 程序来接受某种语言。我已经完成了此操作,但无法理解如何使用生成的 ParseException 来确定输入中的问题,并自定义输出错误消息。

到目前为止,我的代码如下所示:

try {
  task parser = new task(System.in);
  parser.start();
  System.out.println("YES"); // If accepted print YES.
} catch (ParseException e) {
  System.out.println("NO"); // If rejected print NO.
  switch (e) {
    case 1:
       System.err.println("Some error case")
    case 2:
       ...
  }  
}

我查看过的一些来源是 ParseException 和 JavaCC 错误处理页面的文档。两者都没有帮助我更好地理解。

如果有人可以帮助/提示我将非常感激。

最佳答案

您始终可以使用自定义字符串抛出ParseException。例如

void Primary() : {}
{
    <INT> 
|
    "("
|
     {throw new ParseException("At "+getCoords()
                              +" there was \""+ getToken(1).image
                              + "\", but the parser expected either"
                              + " a \"(\" or an integer literal.");}
}

如果您愿意付出足够的努力,应该可以创建一个永远不会抛出没有自定义消息的 ParseException 的解析器。

关于java - 如何根据 JavaCC 中的解析异常创建特定的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36800025/

相关文章:

java - 如何转换 UTC 日期字符串并删除 Java 中的 T 和 Z?

java - 将字符串转换为日历时出错?

java.text.ParseException : Unparseable date 异常

java - Glassfish:它是如何工作的?

whitespace - 任何类型的空格上的 JavaCC 词法错误

java - 简单的自定义表达式解析器

java - javacc 中多余的 LOOKAHEAD 会导致错误吗?

java - 字符串实习真的有用吗?

java - 有没有办法返回错误原因实体?

java - 细胞模型输出未显示