【发布时间】:2018-08-18 05:38:26
【问题描述】:
我正在尝试使用 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;
谢谢。
【问题讨论】:
-
为了将来参考,请注意问题本身应包含相关代码,而不仅仅是作为粘贴箱的链接。您还应该确保您的代码尽可能小,同时仍然编译和重现错误(这称为MCVE)。在这种情况下,您可以轻松地生成 20 行或更少行的 jflex 文件,但仍会产生相同的错误。在这样做的同时,您还应该将您的方法和变量名称翻译成英文,以便我们更容易理解代码。谢谢。
标签: java compiler-construction lexer jflex