【问题标题】:JFlex : Reading from multiple filesJFlex:从多个文件中读取
【发布时间】:2015-03-14 11:08:54
【问题描述】:

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

【问题讨论】:

    标签: flex-lexer jflex


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多