从Antlr4监听器生成特定的警告/错误信息

3
我正在使用Antlr4来对一种旧语言进行词法分析和解析,我的最终目标是生成C#代码,并在模拟执行旧语言的物理硬件的运行时环境中执行此代码。
模拟器和代码生成工作得非常好。
我想从监听器中生成特定的错误消息或警告消息,这是否可能?
例如,该语言允许一行以分号结尾或不以分号结尾,如果一行缺少分号,我想发出警告。
我有许多类似的情况,该语言和物理硬件具有许多奇怪的特征。
谢谢, Gregg
1个回答

1

更好的方法可能是从解析器中发出警告。在解析器的构建过程中,有两种方法:

parser.addErrorListener(new YourErrorListener());
parser.setErrorHandler(new YourParserErrorStrategy());

错误监听器允许自定义错误消息。错误策略控制解析器如何处理特定错误:重新与令牌流同步或有效地插入“缺失”令牌。

你建议我在行末加上一个分号。如果行缺少分号,我会添加分号并发出自定义错误消息。我会尝试一下。 - Gregg Swanson
如果分号(或其他“奇怪”的情况标记)的存在使得后续解析树的分析更容易/更规则,请将其设置为非可选项(我猜这就是您所说的需求),并在缺失时添加它。也可以反过来:跳过额外/意外的标记,取决于ErrorStrategy是否确定它们是否重要--它可以发出警告、修复或退出。 - GRosenberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接