2013-04-29 108 views
1

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

的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语法,如何将会是什么样子?

+0

您需要决定是否要支持某种简化的XML(您可能很快编写解析器)或处理XML标准的全部荣耀(在这一点上编写您自己的解析器成为和巨大的任务,你应该只使用现有的软件包)。 – 2013-04-29 15:45:27

回答

1

这取决于你希望语法有多松散。例如,做一些明确的设想:

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和字符串是终端和其他终端引号之间)

注意你如何能消除上述的一些语法制作,但不会提高可读性。

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