ANTLR4 4.7.1在parse.cs文件中生成一行,内容为
throw new RuntimeException("UNEXPECTED_CHAR=" + (_localctx._UNEXPECTED_CHAR!=null?_localctx._UNEXPECTED_CHAR.Text:null));
该异常不存在。手动编辑生成的代码很容易解决,但是每次语法编辑器的迭代都非常烦人。
像这样使用内置的c#支持
java -jar c:\tools\antlr-4.7.1-complete.jar -Dlanguage=CSharp -visitor SQLite.g4
答案 0 :(得分:1)
该行不是来自ANTLR,而是您正在使用的语法文件。
假设您使用的是SQLite.g4 from the grammars-v4 repository,罪魁祸首是第37-42行的error
规则:
error
: UNEXPECTED_CHAR
{
throw new RuntimeException("UNEXPECTED_CHAR=" + $UNEXPECTED_CHAR.text);
}
;
因此,您可以通过编辑语法来解决该问题,该语法要么包含C#代码而不是Java代码,要么根本不包含任何嵌入式代码(只需删除error
规则(一个实例就可以了)一起使用)。