Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NetBeans lexer引发识别尾随空格的异常_Java_Netbeans_Antlr_Antlr4_Netbeans Platform - Fatal编程技术网

Java NetBeans lexer引发识别尾随空格的异常

Java NetBeans lexer引发识别尾随空格的异常,java,netbeans,antlr,antlr4,netbeans-platform,Java,Netbeans,Antlr,Antlr4,Netbeans Platform,我用ANTLR4编写了一个简单的语法,其中包括一个空格规则: WhiteSpace : [ \t\r\n]+ -> skip; 这是使用org.NetBeans.spi.lexer.lexer集成到NetBeans平台应用程序中的。当输入在EOF之前有尾随空格时,我得到以下异常: java.lang.IllegalStateException: Lexer ExpressionLexer@2cdea2eb returned null token but lexerInput.read

我用ANTLR4编写了一个简单的语法,其中包括一个空格规则:

WhiteSpace : [ \t\r\n]+ -> skip;
这是使用org.NetBeans.spi.lexer.lexer集成到NetBeans平台应用程序中的。当输入在EOF之前有尾随空格时,我得到以下异常:

java.lang.IllegalStateException: Lexer ExpressionLexer@2cdea2eb
  returned null token but lexerInput.readLength()=1
  lexer-state: null
  tokenStartOffset=20, readOffset=21, lookaheadOffset=22
  Chars: "\n" - these characters need to be tokenized.
Fix the lexer to not return null token in this state.
如何使此尾随空格不引起错误

编辑:仅使用ANTLR lexer和解析器代码即可正确工作,不会出错。该错误仅在与NetBeans lexer和其他可能的集成集成时出现。

更改空白规则以将令牌发送到隐藏通道,而不是完全跳过

WhiteSpace : [ \t\r\n]+ -> channel(HIDDEN);
解析器不会看到空白,但是NetBeans lexer会很高兴为所有输入返回一个有效的令牌