我正在尝试使用 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;
谢谢。
最佳答案
根据其文档,JFlex 抛出 ArrayIndexOutOfBounds
每当遇到使用 %7bit
的 Unicode 字符时都会出现异常或%8bit
/%full
编码选项。建议始终使用%unicode
相反,这是默认选项。
您正在使用%unicode
选项,但您还使用 %full
。显然,当您有两种选择时,%full
优先。所以删除%full
并且错误应该消失。
关于java - JFlex 扫描仪 ArrayIndexOutOfBoundsException : 769,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51905624/