JFlex:从多个文件中读取

JFlex : Reading from multiple files

我最近开始使用 JFlex,发现需要从特定的多个输入文件中读取 order.When 它完成了第一个文件,我希望 Jflex 继续其当前状态,扫描仪从新文件。

到目前为止,当我只有 1 个输入文件时一切正常:

br = new BufferedReader(new FileReader("input1"));
Flexer scanner = new Flexer(br);
scanner.yylex();
br.close();
//lame attempt for second input(not working)
br = new BufferedReader(new FileReader("input2"));
scanner.yylex();
br.close();

JFlex 似乎不支持 yywrap(),这是您在 lexflex, 中执行此操作的方式,但是执行此操作的简单方法如下:

InputStream in = new SequenceInputStream(...);
BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
Flexer scanner = new Flexer(br);

其中 ... 为您提供了几种指定输入文件的方法,作为 Enumeration<? extends InputStream> 或一对 InputStreams: 请注意,您可以递归地使用后者,例如

new SequenceInputStream(s1, new SequenceInputStream(s2,s3));