我正在尝试使用JFlex创建扫描仪。我创建了.jflex文件,它可以编译所有内容。问题是,当我尝试证明它时,有时它会给我和JFlex创建的.java类中的ArrayIndexOutOfBoundsException:769错误。
我也在使用Cup Parser生成器。我不知道问题是否与Cup Analysis的一部分有关,但是这就是我如何称呼我的分析仪。
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;
谢谢。
答案 0 :(得分:3)
根据其文档,当JFlex使用ArrayIndexOutOfBounds
或%7bit
/ %8bit
编码选项遇到Unicode字符时,它将抛出%full
异常。建议始终使用%unicode
选项,这是默认选项。
您使用%unicode
选项来是,但是您同时也在使用%full
。显然,当您同时拥有两个选项时,%full
优先。因此,删除%full
,错误就会消失。