我的xml的BNF语法

时间:2013-04-29 07:53:07

标签: xml grammar bnf

我编写了简单的类代码生成器,它基于xml文件创建代码。

xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<classes>
    <class name="Klient">
        <attr type="int">id</attr>
        <attr type="String">imie</attr>
        <attr type="String">nazwisko</attr>
        <attr type="Date">dataUr</attr>
    </class>
    <class name="Wizyta">
        <attr type="int">id</attr>
        <attr type="Klient">klient</attr>
        <attr type="Date">data</attr>
    </class>
</classes>

如果我想将这个简单的xml定义为BNF语法,它会是什么样子?

1 个答案:

答案 0 :(得分:2)

这取决于你想要语法的宽松程度。例如,做出一些明确的假设:

data       -> version '<classes>' classes '</classes>'
version    -> '<?xml version=' quotedString 'encoding=' quotedString '?>'
classes    -> '<class name=' quotedString '>' attributes '</class>' classes
attributes -> '<attr type=' quotedString '>' string '</attr>' attributes

(quotedString和string是终端,所有其他终端都在引号之间)

请注意如何从上面的语法中删除一些产品,但这不会提高可读性。

至于这个语法的实际用法:考虑使用XML解析库,这可能比使用实际的解析器生成器(更不用说手动实现一个)要容易得多。