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

2024-02-04

我需要为 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(使用前将#替换为@)

EXPRESS 数据建模语言的自定义解析器 的相关文章

  • SQL Server 文本数据类型最大长度 = 65,535?

    我正在使用的软件使用文本字段来存储 XML 根据我的在线搜索 文本数据类型应该包含 2 31 1 个字符 目前 SQL Server 每次都会将 XML 截断为 65 535 个字符 我知道这是由 SQL Server 引起的 因为如果我直
  • 如何增加使用 SAX 解析 XML 文件的entityExpansionLimit

    我正在尝试使用 Java 中的 SAX 解析器解析一个 1 23 GB 的 XML 文件 我使用的是 Mac 操作系统和 JDK 1 7 0 51 不幸的是 我收到以下错误 The pasrser has encountered more
  • 我可以在 UITextView 中以编程方式选择文本吗?

    我想在 UITextView 上选择文本 类似于我们点击时看到的默认 选择 和 全选 弹出选项 我希望用户能够从我的自定义菜单中执行此操作 我玩了 selectedRange 但这似乎并没有解决问题 有任何想法吗 Thanks The se
  • 生成基于内联 HTML 样式的样式表?

    一段时间以来 我一直致力于对网站的不同部分进行样式设计 但是我尚未将内联样式放入样式表中 我想知道是否存在一个工具可以解析 HTML 文件并从中生成样式表 例如 这是我网站的一个片段 div class block style border
  • 如果没有解析器生成器,如何用 C 或 Objective-C 编写解析器?

    我正在尝试用 C 或 Objective C 制作一个计算器 它接受以下字符串 8 2 4 3 9 2 并返回答案 2920 我不想使用像 Lex 或 Yacc 这样的生成器 所以我想从头开始编码 我该怎么做呢 除了 龙 这本书之外 还有其
  • 在 C 中解析字符串的最简单方法是什么?

    我必须在 C 中解析这个字符串 XFR 3 NS 207 46 106 118 1863 0 207 46 104 20 1863 r n 并且能够得到207 46 106 118部分和1863部分 第一个 IP 地址 我知道我可以一个字符
  • 从 HTML 文件中获取 jpg 图像

    我正在尝试使用 grep 获取 HTML 文件中 jpg 图像的完整 url 地址 一个问题是其中没有很多换行符 所以当我使用 grep 时 它会获取路径 但也会获取很多我不感兴趣的其他内容 我怎样才能获取 jpg 图像的 url 一张单人
  • Eclipse 中的 AST 处理无法解析绑定

    我正在使用 eclipse JDT AST 解析器来处理一些 Java 代码 并尝试提取字段和方法声明的类型绑定 这样做的逻辑位于我的 Visitor 类中 见下文 不幸的是 我没有任何运气 并且没有任何绑定能够解析 它们始终为空 有趣的是
  • 在 JavaScript 中解析 PHP 数组

    我有一些 PHP 源代码 它们是简单的键值数组 如下所示 return array var1 gt var2 And return array sub gt array var1 gt var2 我需要将它们解析为 JavaScript 对
  • 为什么有 LR(0) 解析器而不是 LL(0) 解析器?

    我一直在维基百科上阅读这两个内容 并注意到虽然存在 LR 0 解析器 但不存在 LL 0 解析器之类的东西 根据我的阅读 我了解到 LL k LR k 中的 k 表示解析器可以看到多少个字符beyond当前正在处理的当前角色 所以我的问题是
  • docx 模板 Docx4j 替换 Java 中的文本

    我是 Docx4j 的新手 我的任务是替换 docx 模板的一些文本 我阅读了 docx4j 的入门指南 但我认为我没有完全理解整个概念 好吧 无论如何 我已经尝试过 Docx4j 的解压模板 1 它与给定的 docx 配合得很好 但是当我
  • UIButton 中的文本下划线

    谁能建议如何在 UIButton 的标题下划线 我有一个自定义类型的 UIButton 我希望标题带有下划线 但 Interface Builder 没有提供任何选项来执行此操作 在 Interface Builder 中 当您为按钮选择字
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k
  • 使用 pandas 删除停用词

    我想从数据框的列中删除停用词 列内有需要拆分的文本 例如我的数据框如下所示 ID Text 1 eat launch with me 2 go outside have fun 我想应用停用词text column所以应该分开 我试过这个
  • 解析 (yyyy-MM-dd) 格式的字符串日期

    我有一个 2013 09 18 形式的字符串 我想将其转换为 java util Date 我正在做这个 SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd Date converted
  • 为什么解析器组合器“seq”用“bind”和“return”定义?

    我正在读这个article http eprints nottingham ac uk 237 1 monparsing pdf关于解析器组合器并且不理解以下内容 他们说使用seq 见下文 导致解析器将嵌套元组作为结果 操作起来很混乱 se
  • 如何在文本集中创建所有字符组合?

    例如 我有这样的文本集 第 1 栏 a b 第 2 栏 l m n 第 3 栏 v w x y 我想将它们组合起来以获得如下输出 alv alw alx aly amv amw amx amy 这将输出 24 种文本组合 如果我只使用前两列
  • Antlr 解析器运算符优先级

    考虑以下语法 我对运算符优先级有疑问 例如 res 2 a b有一个类似的解析树res 2 a b 我知道问题出在哪里 但我没有想到没有相互左递归的 漂亮 解决方案 你能帮我一点忙吗 该语法与自定义访问者一起使用 grammar Math
  • strings.xml 中的 Android 变量

    我在某处读到如何在 XML 文档中使用变量 他们说这很简单 我想也是如此 我在 Android strings xml 文件中成功地使用了它 我一整天都这样使用它 直到突然 android 停止解析它并停止将它视为变量 我这样使用它
  • 使用 ElementTree 在 python 中解析 xml

    我对 python 很陌生 我需要解析一些脏的 xml 文件 这些文件需要先清理 我有以下 python 代码 import arff import xml etree ElementTree import re totstring wit

随机推荐

  • 嵌套的 Angular2 异步管道如何解决?

    我对嵌套异步管道如何以及何时在 angular2 模板中解析感到有点困惑 而且文档现在的位置不是很好 所以我希望有人可以提供帮助 我有一个非常简单的 Rxjs Observable 从服务返回 通过Observable of myArray
  • 从已删除的远程分支中获取原点?

    当我做git fetch origin并且 origin 有一个已删除的分支 它似乎没有在我的存储库中更新它 当我做git branch r它仍然显示origin DELETED BRANCH 我怎样才能解决这个问题 您需要执行以下操作 g
  • ASP.NET Core Signalr 无法在 AWS 上运行

    我们有两个应用程序 服务器端 Net Core 2 0 和客户端 AngulerJs 它们托管在AWS elistic容器服务上 另外 还有一层云耀斑 此外 我们正在使用指向我们的 docker 容器的 ALB 我们的解决方案应该有一个实时
  • 在 Chrome 中清除焦点上的 HTML5 占位符属性文本

    有什么办法可以清除吗placeholder焦点上的文字Chrome Firefox 会清除焦点上的文本 但 Chrome 不会 这会让用户感到困惑的是 栏中的文本是键入的 还是占位符文本 即使我将文本颜色更改为浅灰色 我不想为此使用不必要的
  • 从对象字面量获取链接值,onchange--Javascript/HTML select

    我知道如何使用 switch case 例程操作此菜单 但我想将 switch case 更改为对象文字 A 部分知道如何获取 onchange 值并打开一个窗口 B 部分知道如何在对象中的名称 值对中查找值 但前提是给它一个硬编码名称来匹
  • cvs更新错误

    我正在使用 WinCVS 当我尝试更新模块时 我不断收到此错误 cvs 更新中止 从服务器读取 错误 1 这里的实际问题是什么以及如何解决这个问题 我遇到了这个问题和类似的问题 通过尝试 CVSROOT pserver 字符串的变体来解决
  • 二元运算符 + 的错误操作数类型

    我需要一个最多 20 位的数字 并且我正在使用 bigint 它在下面的行给了我这个错误 二元运算符 的操作数类型错误 BigInteger t new BigInteger my number getText toString my nu
  • Spring 没有独特的 bean 类型

    我在 Spring 中遇到了一个服务的两个组件的小问题 我有这个组件 Component public class SmartCardWrapper 和这个 Component public class DummySmartCardWrap
  • 使用 Symfony 和 Doctrine 调用 null 500 上的成员函数 has()

    我在设置要从以下服务文件运行的学说时遇到一些问题
  • 如何使用 root 权限在 VS Code 中调试 Go 文件?

    如何强制 Delve in VS Code 使用 root 权限 我正在尝试调试涉及 gopacket pcap 的 go 文件 hndl err pcapgo NewEthernetHandle ifname err couldn t o
  • iterrows 无法迭代 DataFrame 错误:元组对象没有属性“A”

    当我尝试迭代数据帧时 数据类型以某种方式发生了变化 dates pd date range 20130101 periods 6 df pd DataFrame np random randn 6 4 index dates columns
  • Wtf IE7 - 使用 setTimeout 的 AJAX 调用

    我已经在 Firefox Opera 和 Seamonkey 上对此进行了测试 效果很好 当谈到 Internet Explorer 7 时 它可以工作 但只能达到一定程度 我每隔几秒就会对 PHP 脚本进行一次 AJAX 调用 在 IE7
  • 如何使用 .net 紧凑框架 3.5 隐藏数据网格中的列

    我有一个使用 DataReader 作为其数据源的 DataGrid 我想隐藏数据网格的第一列 我正在使用 net 紧凑框架 3 5 我可以找到 Windows 窗体的示例 但 api 已更改得足够多 以至于它们不起作用 您可以将列样式宽度
  • 根据列值删除 Pandas 中的 DataFrame 行 - 要删除的多个值

    我有一个值列表 在 Python 列表中事先不知道 我的 Panda DataFrame 中的一列不得包含所有行 网络上的所有食谱 例如this one https stackoverflow com questions 18172851
  • 使用 Optimize R 优化向量

    我想使用 R 的优化函数构建自己的优化 目标函数是多样化比率 最大化它 希望它是正确的 div ratio lt function weight vol cov mat dr lt t weight vol sqrt t weight co
  • 当本机库不存在时,如何构建 FFI 箱的 docs.rs 文档?

    我有一个静态链接到库的 sys 箱 货物 toml package links foo 1 0 构建 rs fn main println cargo rustc link lib dylib foo 1 0 当我发布包时 docs rs无
  • 如何使用水平投影清理二值图像?

    我想使用二元过滤器从车牌中删除除文本之外的任何内容 我在每个轴上都有投影 但我不知道如何应用它 我的想法是擦除白色轮廓 这是我现在正在工作的图像 这是 X 轴上的投影 from matplotlib import pyplot as plt
  • 在 Firebase 中执行多位置更新时如何使用事务?

    在我的 Firebase 数据库中 我需要同时对两个位置进行两次写入 我对这两个位置都有规则 以确保用户在不同时写入另一个位置的情况下无法在那里写入 对这些位置之一的写入需要递增 递减 当然 这必须通过事务来完成 否则我无法保证用户不会覆盖
  • 将 navigation.navigate 传递给子组件

    使用反应导航构建应用程序 我有一个从 firebase 中提取数据并在列表视图中呈现数据的父组件 列表视图渲染组件 ListName 具有 onRowPress 函数 但 this props navigation navigate 未定义
  • EXPRESS 数据建模语言的自定义解析器

    我需要为 EXPRESS 编写一个自定义解析器 据称这是一种数据建模语言 用于定义和传递 CAD 软件的构造信息 以下是一些资源 https en wikipedia org wiki EXPRESS data modeling langu