2009-10-28 118 views
24

我正在使用Java編譯器設計項目。詞彙分析完成(使用jflex),我想知道哪種類似yacc的工具最適合做語法分析和原因分析(效率最高,最容易使用等)。Yacc等效於Java

回答

16

如果你特別想要YACC般的行爲(表驅動),我唯一知道的就是CUP

在Java世界中,似乎有更多人傾向於遞歸下降解析器,如ANTLRJavaCC

效率很少是選擇解析器生成器的原因。

+0

難度:CUP不再維持,[CUP 2](http://www2.in.tum.de/cup2)爲測試版。它還好嗎? – minopret 2012-12-27 16:20:04

+0

@minopret - 十多年來我一直沒有使用過CUP,但除非有一個重大的未修正的bug,否則即使沒有積極維護也應該可以。但是,除非你需要YACC的行爲,否則我會看ANTLR。 – kdgregory 2012-12-29 23:30:48

+0

我正在研究一個GitHub markdown文件(.md)創建器,該創建器需要使用任何語言編寫的代碼文件併爲其生成.md文件。我在Java中這樣做。這些軟件可以處理*任何*語言或只是Java? – 2017-02-11 00:02:49

5

在過去,我已經將ANLTR用於詞法分析器和解析器,而JFlex主頁表示它可以與ANTLR進行互操作。我不會說ANTLR的在線文檔非常棒。我最終投資於'The Definitive ANTLR reference',這對我有很大的幫助。

+1

在我的經驗以及接口,ANTLR是迄今爲止詞法/解析最流行的Java工具。 – 2009-10-28 19:40:43

2

另一種選擇是GOLD Parser

與許多替代方案不同,GOLD解析器從語法生成解析表並將它們放置在二進制,不可執行的文件中。然後,每種受支持的語言都有一個引擎,它讀取二進制表並分析源文件。

我沒有專門使用Java實現,但使用了相當不錯的Delphi結果。