2008-10-05 18 views
28

我需要一個完整的Object Pascal語法(最好是Delphi 2009)。某些語法由幫助文件給出,但並非提供所有信息。所以我開始收集一些信息。最近我將這些添加到或多或少完整的語法描述(EBNF like)中。尋找完整的Delphi(對象pascal)語法

雖然它看起來很廣泛,但仍然存在缺陷,我相信部件丟失(特別是在.NET語法中)。所以我正在問SO SO德爾福社區。你有任何信息,或者你能糾正錯誤嗎?作爲回報,我向社區提供完整的語法。它可能爲你節省一些時間;-)。在未來,我喜歡爲其他語言(如C#/ C++/Java)做同樣的事情。

我已經給出了語法描述:My Syntax sofar。或者如果你喜歡Text version。 (XHTML是從文本版本生成的)。

請注意,語法重點放在語法部分,因爲詞法部分不是一個真正的問題。

更新

我有德爾福語法的新版本。 html version。它包括2009年的版本。棱鏡擴展仍然在待辦事項列表中。我不確定我是否要把它們放在一起。

對於真正的純粹主義者,它也包含完整的彙編代碼(它不支持完整的intel集合,但只有幾條指令被遺漏)。

+0

你想達到什麼,即你的最終目標是什麼?一個語法本身並沒有多大用處。這是否意味着機器可讀(例如,對於解析器生成器)? – 2008-10-05 14:27:12

+0

@menjaraz,nope,我還沒有找到一個額外的資源。但是我幾乎完成了XE2語法,它使用來自源代碼,幫助,網站以及試驗和錯誤的任何信息。 – 2012-03-30 15:58:07

+3

您的2009年德爾福語法版本現已在2012年2月發佈的Sonar Delphi插件中使用,可在http://docs.codehaus.org/display/SONAR/Delphi+Plugin – mjn 2012-06-19 11:50:31

回答

1

你錯過了什麼錯誤和功能?

通過掃描您的文檔,您似乎混合了語法和語義。我不明白爲什麼要在語法級別上區分SimpleTypeFloat和SimpleTypeOrdinal,或者在AddOp和MulOp中將代碼運算符優先級作爲語法功能進行區分。如同您選擇的任何變量名稱一樣,true,false,nil是標識符。

0

您可以隨時閱讀源代碼到Free Pascal Compiler。它支持Object Pascal。

+0

或者只是嘗試在FPC測試套件上運行解析器。它有很多「ODD」Obj Pascal功能的示例程序 – 2009-05-10 14:02:52

16

試試這個:DGrok - 德爾福語法

3

沒有完成,公佈了德爾福的語法。請記住.net和win32 delphi有不同的語法。

This project有手工構建的Delphi解析器。還有很多編譯代碼的測試用例,但是會推動語法的限制。

1

Delphi 7的語法位於Object Pascal書的後面。

你的意思是幾千美元他們甚至不發送給你?他們甚至會寄給你一張6'x 6'的海報嗎?