jFlex 方法(yypushStream、yypopStream..)在用户代码中触发 "cannot find symbol" 错误

jFlex methods (yypushStream,yypopStream..) trigger "cannot find symbol" error in user code

我在 jFlex 中有一些用户代码从 yytext() 生成 BufferedReader,然后将其推入流堆栈。

但是,yypushStream()、yypopStream()、yymoreStreams() 方法似乎无法被 javac 识别,并且每当从用户代码中调用这些方法时都会触发 "cannot find symbol" 错误。

例如:

public void toStream(String a){

InputStream fstream= new ByteArrayInputStream(a.getBytes());
BufferedReader freader = new BufferedReader(new  InputStreamReader(fstream));
yypushStream(freader);

    }

Returns 输出如下:

symbol: method yypushStream(BufferedReader)
Yylex.java:389: error: cannot find symbol
yypushStream(freader);
^

我也试过Yylex.yyPopStream();%public都没有效果。

是不是那些方法不能在用户代码中使用?

谢谢

如果你仔细阅读Jflex Manual,上面写着方法yyPushStream()yyPopStream()yyMoreStreams()仅在名为[=13=的骨架文件中可用],您可以在 src 文件夹中找到它。 所以你不应该在用户代码中使用或调用它。