2016-04-15 7 views
0

Мне было интересно научиться писать JetBrains plugin какое-то время, и сегодня я решил, наконец, попробовать. В основном я добавляю поддержку языков для документов SVG, потому что встроенная поддержка языка XML не может обрабатывать теги/атрибуты, которые используют пространство имен xlink: в SVG.Есть ли способ генерировать BNF-файл из DTD?

Так что я прокладываю себе путь через custom language support tutorial, и я добрался до step 3.3 - define grammar. В основном я имею целью создать файл BNF для определения грамматики, используемой в документах SVG. Проблема в том, что SVG-грамматика навсегда решила бы точно определить.

Что я хотел бы сделать, это сгенерировать этот документ BNF автоматически из SVG Document Type Definition, потому что этот DTD должен содержать достаточно информации, чтобы полностью определить грамматику SVG (я полагаю).

Есть ли способ конвертировать DTD в BNF?

+0

http://www.w3.org/XML/2000/04schema-hacking/dtd2bnf может быть хорошим местом для начала. – bitfiddler

+0

@bitfiddler Пробовал, но не смог. У этого сценария нет документации о том, как его использовать, либо в командной строке, либо в комментариях. –

ответ

0

Я не знаю никаких готовых инструментов; если у вас есть навыки XSLT, было бы легко использовать любой из различных инструментов, которые переводят DTD в форму XML (иногда в XSD или RNG, иногда просто в XML-представление структуры DTD), а затем записывать преобразование XSLT для перехода в формат грамматики, который вам нужен для ваших целей.

Разрешение атрибутов XML, отображаемых в любом порядке, но не содержащих повторяющихся имен атрибутов, довольно утомительно в BNF; вы можете выбрать запрет на дублирование имен атрибутов на другом уровне вашего программного обеспечения.