我正在尝试用JFlex创建一个扫描仪。我创建了我的.jflex文件,它可以编译所有的东西。问题是,当我试图证明它时,有时它会给我JFlex创建的.java类中的ArrayIndexOutOfBoundsException: 769的错误。
我也在使用Cup解析器生成器。我不知道这个问题是否与Cup分析部分有关,但这里是我如何调用我的分析器的。
ScannerLexico lexico = new ScannerLexico(new BufferedReader(new StringReader( jTextPane1.getText())));
ParserSintactico sintaxis = new ParserSintactico(lexico);我不知道该怎么解决它。请帮帮我。
以下是我的代码的链接:
JFlex File "ScannerFranklin.jflex"
Java Class generated "ScannerLexico.java"
我在由JFlex创建的.java类中遇到问题的部分在next_token()函数中( java文件中的第899行)。
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;谢谢。
发布于 2018-08-18 19:30:28
根据其文档,JFlex在遇到使用%7bit或%8bit/%full编码选项的Unicode字符时会抛出ArrayIndexOutOfBounds异常。它建议始终使用%unicode选项,这是默认设置。
您正在使用%unicode选项,但也在使用%full。显然,当你有两个选项时,%full优先。因此,删除%full,错误就会消失。
https://stackoverflow.com/questions/51905624
复制相似问题