JavaCC:您必须使用ReInit()或将JavaCC选项STATIC设置为false

时间:2014-03-29 22:23:59

标签: static option javacc

我正在使用eclipse和JavaCC插件1.5.27
我想使用解析器执行不止一次。如果只使用一次,它会变得完美。第二次在程序中运行解析器时出现错误:

ERROR: Second call to constructor of static parser.  
       You must either use ReInit() or set the JavaCC option STATIC to false
       during parser generation.

所以我在解析后添加了ReInit(),但这没有帮助。 这是代码剪切。

  public static void myParser(String toanalyze) throws ParseException
  {
    InputStream is = new ByteArrayInputStream( toanalyze.getBytes() );
    SQLwhereS parser = new SQLwhereS(is);
    .....
    SQLwhereS.one_line();
    .....
    ReInit(is);
  }

从谷歌寻找所有答案,但没有结果。所以我真的很想知道我是否是唯一一个有这个问题的人。

任何帮助都会很棒。

亲切的问候 汉斯

-

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,我通常使用非静态解析器。以下"答案"更多的是猜测而不是权威的答案。如果您尝试,请发表评论,以便其他人(和我)知道它是否正确。

static SQLwhereS parser = null ;

public static void myParser(String toanalyze) throws ParseException
{
    InputStream is = new ByteArrayInputStream( toanalyze.getBytes() );
    if( parser==null) parser = new SQLwhereS(is); else ReInit(is) ;
    .....
    SQLwhereS.one_line();
    .....

}