парсинг и перевод из текста в xml - PullRequest
1 голос
/ 02 марта 2010

Мне нужно перевести программы, написанные на доменном языке, в представление XML.Эти программы в виде простого текстового файла.Какой подход ты бы мне предложил?Какие API следует использовать для:

  1. Разбор текстовых файлов, написанных на этом языке.
  2. Запись xml на основе полученных токенов и потоков токенов.1008 * Мой критерий - скорее быстрая и простая разработка, чем эффективность использования памяти или времени.

    Большое спасибо Ketan

Ответы [ 2 ]

2 голосов
/ 02 марта 2010

Менее тривиальная часть задания выполняется на шаге 1, который разбирает текст на языке предметно-ориентированного языка (DSL), а не на # 2, что приводит к некоторому языку XML.

Надеюсь, у вас легко есть парсер для DSL (очевидно, этот язык должен был быть использован для использования где-то ...), и вы можете "привязать" свою логику экспорта / преобразования к этому синтаксический анализатор. Если это невозможно, вам нужно написать новый парсер.

В зависимости от сложности DSL, вы можете написать от руки простой синтаксический анализатор, основанный на нескольких циклах и переключениях.
Для более сложных языков ANTLR часто является хорошим выбором. В двух словах, можно формализовать грамматику DSL в форме Бэкуса Наура (BNF, или фактически EBNF , то есть семейство Extended ) и ANTLR. создает парсер, написанный на выбранном целевом языке (включая Java). Кривая обучения с ANTLR является фактором, который следует учитывать, но в контексте языка от умеренного до чрезвычайно сложного, стоит инвестиций. ANTLR аналогичен, но, на мой взгляд, лучший инструмент, чем GNU Bison , однако, этот последний тоже подойдет, и целевая Java так желательна.
Если вы знакомы с другими языками, в частности с Python, есть много других инструментов, которые можно использовать для более или менее специальных анализаторов; Я также использовал PyParsing и с удовольствием рекомендую его.

1 голос
/ 02 марта 2010

XStream - лучший XML-сериализатор / десериализатор для Java EVAR. Если вы можете превратить ваш DSL в классы Java, это отличная библиотека для использования.

...