【问题标题】:Looking for a Complete Delphi (object pascal) syntax寻找完整的 Delphi (object pascal) 语法
【发布时间】:2008-10-05 11:07:02
【问题描述】:

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

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

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

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

更新

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

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

【问题讨论】:

  • 你想达到什么目标,即你的最终目标是什么?语法本身并没有多大用处。它是否意味着机器可读(例如用于解析器生成器)?
  • @menjaraz,不,我还没有找到其他资源。但是我几乎已经使用了来自来源、帮助、网站和反复试验的任何信息来完成 XE2 语法。
  • 您的 2009 版 Delphi 语法现在已用于 2012 年 2 月发布的 Sonar Delphi 插件中,可在 docs.codehaus.org/display/SONAR/Delphi+Plugin 获得
  • 语法非常有用。有一次,大多数有关该语言的书籍都包含语法。这是我开始使用 Delphi 时首先寻找的东西之一。自 1990 年代以来,我没有使用过 Pascal。我不记得 Turbo Pascal 的手册(我记得它在很多方面都很出色)是否包含语法。今天 Embarcadero 在他们的网站上有他们语言的参考,但我找不到语法。 Embarcadero 必须有一个语法,或者接近语法的东西,作为编译器构建的一部分。我希望他们能发布它;这对我有很大帮助。

标签: delphi syntax grammar


【解决方案1】:

试试这个:DGrok - Delphi 语法

【讨论】:

  • 这看起来很有希望。谢谢!
  • 不错。德尔福2007级。 C# 中的解析器。我希望有一个 XE 级别的。
  • @Warren P:PasParse 是 DGrok Delphi 端口享受 ;-) 但仍然是 Delphi 2007 级别:-(
【解决方案2】:

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

This project 有手工构建的 Delphi 解析器。还有大量的代码测试用例可以编译但突破了语法的限制。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 不,我他们也没有。这就是为什么。
    【解决方案4】:

    这可能是一个很好的帮助。就是TwoDesk's Castalia中使用的parser

    【讨论】:

    • 使用RAD的FPC,Lazarus也有基于mw*的高亮解析器(后来的synhighlighter)
    【解决方案5】:

    您缺少哪些错误和功能?

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

    【讨论】:

      【解决方案6】:

      您始终可以阅读Free Pascal Compiler 的源代码。它支持 Object Pascal。

      【讨论】:

      • 或者只是尝试在 FPC 测试套件上运行您的解析器。它有很多更“奇”的 Obj Pascal 特性的示例程序
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多