【问题标题】:Custom Parser for EXPRESS data modeling languageEXPRESS 数据建模语言的自定义解析器
【发布时间】:2018-12-15 10:30:48
【问题描述】:

我需要为 EXPRESS 编写一个自定义解析器 - 有人提到它是一种数据建模语言,用于为 CAD 软件定义和传递构造信息。 这里有几个资源:

https://en.wikipedia.org/wiki/EXPRESS_(data_modeling_language) https://www.loc.gov/preservation/digital/formats/fdd/fdd000449.shtml

好吧,我需要为这种“数据建模语言”设计一个自定义解析器。但是,我不知道在开始实现一个像样的解析器之前需要注意哪些细节。在决定如何解析并以有意义的方式表示之前,我应该通过哪些方式分析这种基于文本的格式?

关于这种“数据建模语言”及其语法,我需要特别了解哪些信息,才能设计出合理的解析器?

【问题讨论】:

  • 你需要知道它的语法。 :) 这可能在一份标准文件中正式描述过。如果你幸运的话,你会从你的雇主那里得到一份合适的方便的礼遇,否则你将不得不向 ISO 乞讨、借用或购买一份。
  • @rici 我分享的第二个链接提到“EXPRESS 是在 Wirth Syntax Notation (WSN) 的派生词中定义的。”
  • 是的,EXPRESS的文件是用英文写的。这足以开始,对吧? :) 您分享的第二个链接还提到,在ISO standard 10303-11:2014 中可以找到正式规范,您可以从 ISO 购买 198 瑞士法郎。(如果您去您的国家标准机构,可能会更便宜。或者可能不会。)
  • 假设您正在寻找解析 IFC STEP 文件(使用 EXPRESS 语法定义),您为什么不查看一些已经处理数据解析和处理的工具包和库文件。例如。这里有三个供初学者使用 docs.xbim.net ifcopenshell.orggithub.com/hypar-io/IFC-gen
  • 免责声明:我参与了 XBim - 但我的观察是交换构造信息比解析 EXPRESS 文件要多得多。我希望通过建立其他组织已经建立和证明的东西来快速起步,而不是从头开始......

标签: parsing text analysis ifc bim


【解决方案1】:

在 Backus-Naur-Form on github 中有 EXPRESS 语言的描述。有些工具可以在 BNF 中获取描述并从中生成解析器(例如 bisonboost::spirit)。

这些将为您提供该语言的工作文本解析器。下一步是为解析的文本赋予意义。 EXPRESS 通常描述类层次结构和某些约束,因此您需要使用从解析器获得的标记对其进行建模。

您可能想看看现有的实现,例如stepcode。他们有一个 EXPRESS 解析器,它采用 EXPRESS 模式并生成一个 STEP 解析器,可以加载由 EXPRESS 模式描述的文件。

您应该知道 EXPRESS 和 STEP 是非常强大和广泛的工具,因此您应该考虑使用/修改现有的实现,而不是自己动手。

【讨论】:

    【解决方案2】:

    EXPRESS2EMF 项目中有一个基于 的解析器。虽然它还没有完成。目前它仍在跳过约束(又名 where 规则)和一些 IFC 规范中未使用的 EXPRESS 语言结构。

    【讨论】:

      【解决方案3】:

      在这里您可以找到使用 Flex 和 Bison 实现的 C++ 解析器:oipExpress

      【讨论】:

      • iopExpress 解析器有一些缺陷。它不能完全发挥作用。
      • 当 IFC2x3_TC1.exp 或 IFC4.exp 提供给解析器时,解析器会出错。但是,虽然我不确定 Schema 和 Entity 类中的表示形式有多正确,但后来的版本似乎可以正常工作。
      猜你喜欢
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多