2015-11-27 199 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

相關問題