如何基于JavaCC中的解析异常创建特定的错误消息

时间:2016-04-22 17:32:19

标签: 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错误处理页面的文档。也没有帮助我更好地理解。

如果有人可以提供帮助/提示,​​我会非常感激。

1 个答案:

答案 0 :(得分:2)

您始终可以使用自定义字符串抛出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的解析器。