JFlex Scanner ArrayIndexOutOfBoundsException:769

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JFlex Scanner ArrayIndexOutOfBoundsException:769相关的知识,希望对你有一定的参考价值。

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

谢谢。

答案

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

您正在使用%unicode选项,但您也使用%full。显然,当你有这两个选项时,%full优先。所以删除%full,错误应该消失。

以上是关于JFlex Scanner ArrayIndexOutOfBoundsException:769的主要内容,如果未能解决你的问题,请参考以下文章

将 Pygments 正则表达式翻译成 JFlex

使用 JFlex

如何使用Jlex和Cup工具

[1] [2] [3]线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:3在Matrices.main(Matrices.java:19)[重复

scanner.nextInt()与scanner.nextDouble

java中如何使用scanner来实现数据的输入?