ANTLR4的最佳方法是什么?

时间:2015-11-27 07:05:22

标签: java antlr antlr4

我对ANTLR4有点新意。 我有完整的ANTLR4语法来解析COBOL源文件,但我对我的问题有点困惑: -

  1. 性能问题(我也使用了Prediction.SLL模式,但有时它会跳过一些规则)
  2. 当我提供一些不同类型或新文件时,总是语法将无法解析新文件(语法失败)。总是需要更改吗?
  3. 我了解YACC,但YACC没有UI,也不支持Java解析器生成。
  4. 岛屿方法怎么样?它有帮助吗?
  5. 我应该使用其他任何工具吗?

    我想要了解ANTLR提取事物的最佳方法,是否有任何其他开源工具,如ANTLR,可以有效地实现此目的。

    您的建议和指导非常受欢迎。

1 个答案:

答案 0 :(得分:1)

  1. Antlr非常快,没有任何性能调整 - 它会在适当的地方使用SLL,并在必要时自动回退到LL。在深度递归分析中通常会遇到回退 - 在解析像COBOL这样的简单过程语言时不会出现这种情况。

  2. 通常编写语言语法以反映目标语言规范。在那种情况下,那么不,将不需要进一步更改语法。如果将语法写入规范的一个子集,您可能会发现自己逐渐更改语法,直到它与完整规范匹配为止 - 除非您完全确定正确的子集'

  3. 所以这不是一个选择。

  4. Antlr直接通过词法分析器模式支持岛语法。这对于大多数目的来说已经足够了。如果不是你的,那么你需要更充分地解释这个需求。

  5. 有很多工具可以做Antlr所做的事情。哪个是最好的'取决于您的全部要求。在您的问题中确定的范围内,Antlr与解析COBOL一样好。