2008-10-05 20 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'的海报吗?