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