2015-11-27 177 views
-2

我在ANTLR4上有点新鲜。 我有充分的ANTLR4语法解析COBOL源文件,但我一点与我的问题混淆: -ANTLR4的最佳方法是什么?

  1. 性能问题(我还用Prediction.SLL模式,但一段时间后它会跳过一些规则)
  2. 当我提供一些不同类型或新文件时,总是语法不能解析新文件(语法错误)。始终需要更改?
  3. 我知道YACC,但YACC没有UI,也不支持Java分析器生成。
  4. Island方法呢?它有什么用处?

OR我应该使用其他工具吗?

我想了解ANTLR提取出事情的最佳方式,以及是否有任何其他开源工具(如ANTLR)可以有效地实现此目的。

您的建议和guidense高度appriciated。

+0

说到你遇到的问题时,它很大程度上取决于你的语法设计。因此,如果你不能提供整个语法或至少对讨论重要的部分,我不认为这个问题会产生任何有价值的结果。 –

+0

我知道我没有把我的问题写得这么好。但是我的动机是理解ANTLR的性能问题,并且也愿意知道Island是否比Full grammar有更多的优势?现在是的,我了解YACC是对ANTLR来说不是一个好的选择。但是,我很想知道是否有另一种类似于ANTLR的工具?不是YACC。 – Siddharth

+1

谷歌搜索和一些挖掘是只需点击几下。这将是一个更好的方式来训练自己。 SO不是取代这种学习体验的地方,而仅仅是为了学习期间的具体事情。 –

回答

1
  1. ANTLR的速度非常快,没有任何扭捏表现 - 它会使用SLL在适当情况下并在必要时自动退回到LL。在深度递归分析中通常会遇到回退 - 而不是像分析COBOL这样的简单过程语言。

  2. 语言语法通常是为了反映目标语言规范而编写的。在那种情况下,否则,不需要进一步修改语法。如果语法写入规范的子集,很可能你会发现自己正在逐步改变语法,直到它符合完整的规范 - 除非你完全可以确定正确的“子集”。

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

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

有许多工具可以做Antlr的工作。哪个“最好”取决于你的全部要求。在你的问题中,Antlr和解析COBOL一样好。

+0

那么你可以让我知道另一种类似于ANTLR的工具。 – Siddharth

+0

搜索“Antlr替代品” – GRosenberg

相关问题