用于EXPRESS数据建模语言的自定义解析器

时间:2018-07-06 19:43:36

标签: parsing text analysis ifc bim

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

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

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

对于这种“数据建模语言”及其语法,我特别需要了解什么,以便我能提出一个合理的解析器?

3 个答案:

答案 0 :(得分:1)

在Backus-Naur-Form on github中有对EXPRESS语言的描述。有一些工具会在BNF中进行描述并从中生成解析器(例如bisonboost::spirit)。

这些将为您提供该语言的有效文本解析器。下一步是给解析后的文本一个含义。 EXPRESS通常描述类的层次结构和某些约束,因此您将需要使用从解析器获得的令牌对其进行建模。

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

您应该知道EXPRESS和STEP是非常强大且功能强大的工具,因此您应该考虑使用/修改现有的实现方式,而不是滚动自己的实现方式。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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