0

一段时间以来,我一直对学习编写JetBrains 插件很感兴趣,今天我终于决定试一试。基本上我正在为 SVG 文档添加语言支持,因为内置的 XML 语言支持无法处理使用xlink:SVG 中的命名空间的标签/属性。

因此,我正在学习自定义语言支持教程,并且已经进入第 3.3 步 - 定义语法。基本上,我打算创建一个 BNF 文件来定义 SVG 文档中使用的语法。问题是SVG 语法需要永远严格定义

我想做的是从SVG Document Type Definition自动生成这个 BNF 文档,因为这个 DTD 应该包含足够的信息来完全定义 SVG 的语法(我想)。

有什么方法可以将 DTD 转换为 BNF?

4

1 回答 1

0

我不知道任何现成的工具。如果您有任何 XSLT 技能,则可以直接使用将 DTD 转换为 XML 形式(有时转换为 XSD 或 RNG,有时只是转换为 DTD 结构的 XML 表示)的各种工具,然后编写 XSLT 转换为您的目的所需的语法格式。

允许 XML 属性以任意顺序出现但不包含重复的属性名称在 BNF 中是相当乏味的;您可以选择在您的软件的不同级别强制禁止重复的属性名称。

于 2016-05-01T02:51:12.167 回答