寻找完整的Delphi(Object Pascal)语法

29
我需要完整的Object Pascal语法(最好是Delphi 2009)。帮助文件中提供了一些语法,但并没有提供所有信息。所以我开始收集零散的信息。最近,我把它们加入到一个更完整的语法描述(类似于EBNF)中。
尽管看起来很广泛,但仍然存在错误,我相信有些部分还缺失(特别是在.NET语法方面)。因此,我向SO Delphi社区求助。您是否有任何信息可以纠正这些错误?作为回报,我会向社区提供完整的语法。这可能节省您一些时间;-)。将来,我希望对其他语言(如C#/ C ++ / Java)也做同样的事情。
我已经拥有的语法描述如下:My Syntax sofar或者Text version(XHTML是从文本版本生成的)。
请注意,该语法侧重于句法部分,因为词法部分不是真正的问题。
更新
我有一个新版本的Delphi语法。html version。它包括所有版本,包括2009。Prism扩展仍在待办列表中。而且我不确定是否会将它们保持在一起。
对于真正的纯粹主义者,它还包含完整的汇编代码(它不支持全部100%的intel集合,但只缺少了几个指令)。

你想要实现什么目标,也就是说你的最终目的是什么?一个孤立的语法本身并没有太多用处。它是用于机器阅读的吗(例如用于解析器生成器)? - Barry Kelly
@menjaraz,没有,我还没有找到其他的资源。但是我几乎已经完成了使用来自各种信息源、帮助、网站和试错法的 XE2 语法。 - Toon Krijthe
3
你们2009年的Delphi语法现在被用于Sonar Delphi插件中,该插件已于2012年2月发布,可在http://docs.codehaus.org/display/SONAR/Delphi+Plugin上获取。 - mjn
语法可以非常有用。大多数关于编程语言的书籍都包含了语法。当我开始使用Delphi时,这是我最先寻找的东西之一。自从20世纪90年代以来,我就没有使用过Pascal。我不记得Turbo Pascal的手册(我记得在很多方面都非常出色)是否包含了语法。今天,Embarcadero在其网站上提供了其语言的参考资料,但我找不到语法。Embarcadero必须在其编译器的构建中包含语法或类似的内容。我希望他们能够发布它;这将对我有很大帮助。 - D A Vincent
6个回答

16

试试这个:DGrok - Delphi 语法分析器


这看起来很有前途。谢谢! - Toon Krijthe
不错。Delphi 2007级别。使用C#编写的解析器。但愿XE级别也有一个。 - Warren P
@Warren P:PasParse是DGrok Delphi移植版。享受吧;-)但仍然只有Delphi 2007级别:-( - menjaraz

3

没有完整的、公开的Delphi语法。请注意,.net和win32 Delphi有不同的语法。

这个项目里有一个手工构建的Delphi解析器。以及许多编译但推动语法极限的代码测试用例。


2

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


FPC使用RAD Lazarus,还具有基于mw*(后来的synhighlighter)的语法高亮解析器。 - Marco van de Voort

2

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

你的意思是花费几千美元,他们甚至不会把那个寄给你吗?他们连一张6' x 6'的海报都不寄给你吗?


不,他们也没有。这就是为什么。 - Toon Krijthe

1

您缺少的是哪些错误和功能?

从扫描您的文档来看,似乎您混淆了语法和语义。我不明白为什么要在语法层面上区分SimpleTypeFloat和SimpleTypeOrdinal,或者将代码运算符优先级作为AddOp和MulOp中的语法特征。true、false、nil与您选择的任何变量名称一样都是标识符。


0

或者尝试在FPC测试套件上运行您的解析器。它有许多更“奇怪”的Obj Pascal特性的示例程序。 - Marco van de Voort

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接