2013-04-29 80 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解析庫,這可能比使用實際的解析器生成器(更不用說手動實現一個)更容易。