JFlex扫描器ArrayIndexOutOfBoundsException:769

时间:2018-08-18 05:38:26

标签: java compiler-construction lexer jflex

我正在尝试使用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;

谢谢。

1 个答案:

答案 0 :(得分:3)

根据其文档,当JFlex使用ArrayIndexOutOfBounds%7bit / %8bit编码选项遇到Unicode字符时,它将抛出%full异常。建议始终使用%unicode选项,这是默认选项。

您使用%unicode选项来,但是您同时也在使用%full。显然,当您同时拥有两个选项时,%full优先。因此,删除%full,错误就会消失。