首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ANTLRWorks中写入文件

在ANTLRWorks中写入文件
EN

Stack Overflow用户
提问于 2013-12-13 12:59:01
回答 1查看 157关注 0票数 1

我正在使用ANTLR框架编写一个解析器。我想写一个文件,所以我使用了这段代码,但是我不知道应该在哪里关闭这个文件?

代码语言:javascript
复制
@header
{
    import java.io.*;
}

main:{ 

  BufferedWriter out = null;
    try{ 
  FileWriter fstream = new FileWriter("output.txt");
  out = new BufferedWriter(fstream);

  }

  catch (Exception e){
  System.err.println("Error: " + e.getMessage());
  }

  };


    p1  :   p2 {out.write("this is p1");}
        ;

   p2 ......
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 13:47:19

如果main是语法的入口点,则在该规则的末尾关闭流:

代码语言:javascript
复制
grammar T;

@header {
  import java.io.*;
}

@members {
  OutputStream out = null;

  void before() {
    // initialize 'out' here
  }

  void after() {
    // close 'out' here
  }
}

main
 : {before();}
   p1 EOF
   {after();}
 ;

p1
 : p2 {out.write("this is p1");}
 ;

p2
 : ...
 ;

您甚至可以在@members块中提供方法的空实现:

代码语言:javascript
复制
@members {
  OutputStream out;

  void before() {}

  void after() {}
}

并在侦听器/访问者类中重写/实现它们,以最小化语法本身中的特定目标代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20567151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档