有没有办法从DTD生成BNF文件?

时间:2016-04-15 01:30:23

标签: xml dtd context-free-grammar bnf format-conversion

我有兴趣学习写JetBrains plugin一段时间了,今天我决定最后尝试一下。基本上我正在为SVG文档添加语言支持,因为内置的XML语言支持无法处理在SVG中使用xlink:命名空间的标记/属性。

所以我正在custom language support tutorial完成工作,并且我已经step 3.3 - define grammar了。基本上我的意思是创建一个BNF文件来定义SVG文档中使用的语法。问题是 SVG语法需要永远严格定义

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

有没有办法将DTD转换为BNF?

1 个答案:

答案 0 :(得分:0)

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

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