3

有沒有可以解析C語法的庫?C語法分析器

例如,我想寫我自己的代碼/腳本,將分析c語法的c文件。每個函數/文件的「if」語句的數量,函數中每行代碼的註釋行數等.....

我沒有問題寫所有這些自定義代碼只是爲了使工作更容易已經有一些庫可以用來跳過開始,而不是從解析器開始。

謝謝!

+6

我認爲使用'clang'作爲庫可能工作。 –

+0

嗯,我不知道如何用叮噹做到這一點。例如,計算函數中「if」語句的數量。 – jox

+1

@jox,鏗鏘可以肯定你在找什麼。畢竟它確實包含完整的C語言分析器。 –

回答

2

除了clang已經提出的建議,請考慮pycparserBoost.Wave

+0

布賴恩,pycparser正是我所追求的。非常簡單和容易。有沒有簡單的c/C++的東西?如果沒有,我會用Python來破解一些東西。 – jox

+1

您可能會發現,針對C++的「黑客攻擊」非常困難且容易出錯。 –

0

就個人而言,我會首先尋找一個現有的工具來做你想做的事。這聽起來像是一項非常多的工作,代碼指標中有很多很好的免費工具(你看過SourceForge?)。

如果你堅持你的項目走在前面,你可能會爲谷歌萊克斯/ Yacc語法爲C.

不過,我從萊克斯/ Yacc的幾年前切換到Antlr。我特別喜歡它允許你的方式visually step through your parsing

一個很棒的工具,並且免費。有一個complete grammar for C也可用,所以你可以修改,以滿足您的需求。

希望這會有所幫助。好運

2

儘管它們更多地針對語義分析而不是語法分析,但您可能對CILFrama-C感興趣,它基於它(均在OCaml中)。另一個感興趣的工具(OCaml和Python綁定)是Coccinelle

-1

你也可以考慮嘗試一個代碼覆蓋工具。儘管代碼覆蓋率旨在向您顯示多少百分比的源代碼被執行,但其中一些還顯示了在執行代碼覆蓋時遇到了多少條件語句或循環。根據我的經驗,我可以分享的一個例子是windriver工作臺代碼覆蓋工具