2010-03-02 2 views
1

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

  1. Разбор текстовых файлов на этом языке.
  2. Напишите xml на основе токенов и токенов, которые я получаю.

Мои критерии - это скорее быстрая и простая разработка, а не экономия времени и времени на вычисление.

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

+0

У вас есть доступ к коду переводчика для DSL? –

+0

для 1. вы можете использовать antlr http://www.nearinfinity.com/blogs/bill_bejeck/learning_antlr_part_i.html для 2. вам нужен XML-сериализатор http://karussell.wordpress.com/2009/09/03/xml -serializers-для-Java / – Karussell

ответ

2

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

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

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

1

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

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