如何根据 JavaCC 中的解析异常创建特定的错误消息
How to create specific error messages based on parse exceptions in JavaCC
我正在制作一个 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 错误处理页面。两者都没有帮助我更好地理解。
谁能help/hint感激不尽
您始终可以使用自定义字符串抛出 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
没有自定义消息的解析器。
我正在制作一个 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 错误处理页面。两者都没有帮助我更好地理解。
谁能help/hint感激不尽
您始终可以使用自定义字符串抛出 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
没有自定义消息的解析器。