JFlex :从多个文件中读取



我最近开始使用JFlex,并遇到了按特定顺序从多个输入文件中读取的需要。当它完成第一个文件时,我希望 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() ,这就是你在 lex 和 flex 中执行此操作的方式但执行此操作的简单方法如下:

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));

最新更新