代码之家  ›  专栏  ›  技术社区  ›  Pavel_K

如何使用ANTLR4解析多个java源?

  •  0
  • Pavel_K  · 技术社区  · 4 年前

    0 回复  |  直到 7 年前
        1
  •  2
  •   Mike Lischke    7 年前

    是的,重用对象是可能的。解析调用的典型序列如下所示:

    input.load(newText);
    errors.clear();
    lexer.reset();
    lexer.setInputStream(&input); // Not just reset(), which only rewinds the current position.
    tokens.setTokenSource(&lexer);
    
    parser.reset();
    ...
    

    这可能是解析器服务类的一部分。所有对象(解析器、lexer、令牌流、输入流)都是在这个类的c-tor中创建的,然后为每个解析操作调用上面的代码。

    然而,通过重用这些对象,您不会赢得太多。创建成本很低,而且大量数据是静态保存的,因此不需要在每次创建解析器时重新创建。