java - JFlex 扫描仪 ArrayIndexOutOfBoundsException : 769

标签 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;

谢谢。

最佳答案

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

正在使用%unicode选项,但您还使用 %full 。显然,当您有两种选择时,%full优先。所以删除%full并且错误应该消失。

关于java - JFlex 扫描仪 ArrayIndexOutOfBoundsException : 769,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51905624/

相关文章:

用于带有 JDBCthin 驱动程序的 xml 类型的 Java API

linux - 静态链接 ELF 32 位二进制 - 发行版特定

compiler-construction - MPI 阻塞接收语义

c++ - GCC 中的 std::string 实现及其短字符串的内存开销

java - 是否可以让 Antlr4 从基本语法词法分析器而不是生成词法分析器生成词法分析器?

parsing - 解析数字和字符串是 Lexer 的工作吗?

java - 无法运行 JFlex 生成的词法分析器 Java 文件

java - 在 ofEpochMilli 和 ofEpochSecond 之间切换

java - 尝试将 Sprite 绘制到 JFrame 上时发生 drawImage 错误

java - 具有乘法实现复杂性的 For 循环