28

我需要一个完整的 Object Pascal 语法(最好是 Delphi 2009)。帮助文件提供了一些语法,但并未提供所有信息。所以我开始收集零散的信息。最近我将这些添加到或多或少完整的语法描述中(类似 EBNF)。

虽然它看起来很广泛,但仍然存在错误,而且我确信缺少部分(特别是在 .NET 语法中)。所以我在问 SO Delphi 社区。你有任何信息或者你能纠正错误吗?作为回报,我向社区提供了完整的语法。它可能会为您节省一些时间;-)。将来,我喜欢对其他语言(如 C#/C++/Java)做同样的事情。

我已经给出了语法描述:My Syntax sofar。或者,如果您喜欢文本版本。(XHTML 是从文本版本生成的)。

请注意,语法侧重于句法部分,因为词法部分并不是真正的问题。

更新

我有一个新版本的 Delphi 语法。.html 版本。它包括所有版本,包括 2009。棱镜扩展仍在待办事项列表中。而且我不确定我是否要把它们放在一起。

对于真正的纯粹主义者,它还包含完整的汇编代码(它不支持完整的 100% 的英特尔集,但仅遗漏了几条指令。)。

4

6 回答 6

16

试试这个:DGrok - Delphi 语法

于 2008-10-05T16:23:30.290 回答
3

Delphi 没有完整的、已发布的语法。请记住,.net 和 win32 delphi 有不同的语法。

这个项目中有手工构建的 Delphi 解析器。以及许多可以编译但突破语法限制的代码测试用例。

于 2008-10-05T16:33:26.293 回答
2

这可能是一个很好的帮助。它是TwoDesk 的 Castalia中使用的解析器

于 2009-01-03T22:06:19.017 回答
2

Delphi 7 的语法在 Object Pascal 书的后面。

你的意思是几千美元他们甚至不寄给你吗?他们甚至会寄给您一张 6' x 6' 的海报吗?

于 2008-10-08T19:19:33.850 回答
1

您缺少哪些错误和功能?

通过扫描您的文档,您似乎混合了语法和语义。我不明白为什么要在语法级别上区分 SimpleTypeFloat 和 SimpleTypeOrdinal,或者代码运算符优先级作为 AddOp 和 MulOp 中的语法特征。true、false、nil 是标识符,就像您选择的任何变量名一样。

于 2008-10-05T11:59:12.667 回答
0

您总是可以阅读Free Pascal Compiler的源代码。它支持对象帕斯卡。

于 2008-10-05T13:52:25.307 回答