我需要为 EXPRESS 编写一个自定义解析器 - 据称这是一种数据建模语言,用于定义和传递 CAD 软件的构造信息。
以下是一些资源:
https://en.wikipedia.org/wiki/EXPRESS_(data_modeling_language) https://en.wikipedia.org/wiki/EXPRESS_(data_modeling_language)
https://www.loc.gov/preservation/digital/formats/fdd/fdd000449.shtml https://www.loc.gov/preservation/digital/formats/fdd/fdd000449.shtml
好吧,我需要为这种“数据建模语言”设计一个自定义解析器。但是,我不知道在开始实现一个像样的解析器之前需要注意哪些细节。在决定如何解析它并以有意义的方式表示它之前,我应该以什么方式分析这种基于文本的格式?
关于这种“数据建模语言”及其语法,我特别需要了解什么,以便我能够提出合理的解析器?
Backus-Naur-Form中有EXPRESS语言的描述在 github 上 https://github.com/dustintownsend/EXPRESS-Modeling-Language-References。有些工具可以采用 BNF 格式的描述并从中生成解析器(例如bison https://www.gnu.org/software/bison/ or 提升::精神 https://www.boost.org/doc/libs/1_67_0/libs/spirit/doc/html/index.html).
这些将为您提供该语言的有效文本解析器。下一步是赋予解析后的文本含义。 EXPRESS 通常描述类层次结构和某些约束,因此您需要使用从解析器获得的标记对其进行建模。
例如,您可能想看看现有的实现stepcode https://github.com/stepcode/stepcode。他们有一个 EXPRESS 解析器,它采用 EXPRESS 模式并生成一个 STEP 解析器,该解析器可以加载 EXPRESS 模式描述的文件。
您应该知道 EXPRESS 和 STEP 是非常强大且广泛的工具,因此您应该考虑使用/修改现有的实现,而不是自行开发。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)