我的目標是製作一個非常簡單和基本的C語法檢查器。 (不是一個完整的編譯器,而只是一個基本程序,它將源代碼作爲輸入並打印出顯示錯誤的代碼)。我想用C++作爲它的語言。詞法分析
任何人都可以指導我寫的 'C++' 語言正則表達式如下:
- 分配
- 對於
- 開關
任何細節/建議/指導進一步將非常感謝。
我的目標是製作一個非常簡單和基本的C語法檢查器。 (不是一個完整的編譯器,而只是一個基本程序,它將源代碼作爲輸入並打印出顯示錯誤的代碼)。我想用C++作爲它的語言。詞法分析
任何人都可以指導我寫的 'C++' 語言正則表達式如下:
任何細節/建議/指導進一步將非常感謝。
我不認爲你可以單獨使用正則表達式解析C
。你需要開始尋找到詞法,語法分析器,語法等...
一個很好的出發點可能是這樣的:Quick Starter on Parser Grammars - No Past Experience Required。您可以在這裏搜索到C
文字在線。
檢查的C代碼的語法要求比正則表達式多了不少。你需要一個工具,它支持解析代數gammars相反,我建議在看http://www.gnu.org/software/bison/這將產生一個解析器的「骨架」,在C++這樣你就可以編輯和添加你的語法檢查代碼。
使用clang
庫。教程可以在GitHub找到。
要承認C語句,詞法分析是不夠的,因爲在詞法分析器人物等級工作。除C語法分析器外,您還需要一個C語法分析器,它將對源代碼進行語法分析。 LRSTAR Parser Generator提供了一個C項目,它可以啓動並運行,但不會處理預處理器代碼(#include,#ifdef等)。 LRSTAR使用C++生成詞法分析器和解析器,它是免費且開源的;如果使用GCC進行編譯,則可以在Windows,Linux,Mac OS X和其他平臺上運行。包括一個用於C語言處理的MS Visual Studio項目。
^^對不起。那是什麼? – Sadique 2011-03-20 09:25:23
請注意,詞法和句法分析是非常不同的事情。詞法分析(掃描)將輸入劃分爲標記,句法分析(解析)使這些標記之外的語法樹成爲可能。 – ninjalj 2011-03-20 12:21:11