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()
,这是您在 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));
我最近开始使用 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()
,这是您在 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));