2012-02-16 157 views

回答

2

這可能是最簡單的供你使用ANTLR,並得到它的產生基於現有ANTLR語法的AST ,例如the source

ANTLR有一個Java API這裏:http://www.antlr.org/api/Java/index.html

+3

您可能可以構建C語法分析器; ANTLR肯定在狹義的意義上建立了精細的解析器。但是,OP想要的東西似乎是讀取真正的C程序的東西。要做到這一點的詳細工作比您想象的要大得多:預處理器,方言(C89,C99,C11,...),供應商變量(GCC,MSVC,GreenHills),字符集。你最好得到一個已經完成所有工作的人,而不是試圖自己重新創造它。 – 2015-07-03 12:49:42

-1

我們C Front End不是在Java中,絕對不是在Python: - },但提供了強大的解析器的C代碼許多現實方言。它不僅僅是構建ASTs;它提供了一個預處理器,符號表,局部和全局流分析,如果您想對C做任何事情而不僅僅是「擁有AST」,您將需要這些分析。

它構建在我們的DMS Software Reengineering Toolkit之上,它提供瞭解析和流分析的基礎結構,可以將轉換應用於AST使用模式,並可以重新生成有效的源代碼。

編輯2015年7月(回覆評論):DMS本身是用並行編程語言PARLANSE實現的,它的功能類似於C,但包含細粒度並行結構和異常處理。 DMS提供了一組用於定義語言處理的DSL:一個完全支持Unicode的詞法分析器,用於語法的BNF,用於計算樹狀分析的屬性語法以及用於模式識別和重寫源代碼的源到源轉換。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – 2015-07-04 13:10:18

+0

@TonyHopkinson:「*尋找C源代碼解析器*」的哪部分不直接回答?這個答案的評論在哪裏? – 2015-07-04 13:37:59

+1

望着我的伴侶。 Guy還要求提供java,而你並沒有說它的內容是什麼。建在我們之中......也讓我有些不安。如果是我,我會這樣做,因爲你可能想看看評論。 PS我沒有做downvote ... – 2015-07-06 09:45:48

2

Eclipse CDT項目有一個用Java編寫的C語法分析器,請參閱我的answer以得到類似的問題。