2015-01-15 2 views
1

최근에 JFlex를 사용하기 시작했고 특정 순서로 여러 입력 파일을 읽을 필요가있었습니다. 첫 번째 파일을 끝내면 Jflex가 현재 상태로 계속 진행하고 스캐너가 계속 진행되기를 원합니다. 새 파일에서. 난 단지 1 개 입력 파일이있을 때JFlex : 여러 파일에서 읽기

지금까지 모든 작동합니다 :

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

,로 다음 중 하나를 다음과 같이이 작업을 수행하는 쉬운 방법입니다또는 InputStreams: 쌍으로 사용하면 재귀 적으로 사용할 수 있습니다 (예 :

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