2015-01-15 93 views
1

我最近開始使用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(); 

回答

2

JFlex的似乎並不支持yywrap(),這是你如何在彎曲,但做到這一點簡單的方法來做到這一點如下:

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