2013-04-29 3 views
1

Я написал простой генератор кода кода, который создает код на основе xml-файла.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, как это будет выглядеть?

+0

Вам нужно решить, хотите ли вы поддержать что-то вроде упрощенного XML (для которого вы, скорее всего, можете написать парсер довольно быстро), или обрабатывает полную славу стандарта XML (в этот момент написание собственного анализатора становится и огромной задачей, и вы должны просто использовать существующий пакет). –

ответ

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, которая, вероятно, будет намного проще, чем использование реального генератора парсеров (не говоря уже о том, чтобы вручную реализовать один).

 Смежные вопросы

  • Нет связанных вопросов^_^