Если ваши входные данные являются, как предполагается, XML, а ваши выходные - HTML, то это основной вариант использования XSLT. Суть XML в том, что вам не нужно писать свой собственный синтаксический анализатор, поэтому, если это делается как работа, а не как школьный проект, который будет первым методом, который будет использоваться. Если вы не можете выразить это как преобразование, то вы можете посмотреть в другом месте.
Если вы не хотите использовать XML, то современные инструменты для текстовых языков включают грамматики выражений синтаксического анализатора и инструменты синтеза DSL, такие как Microsoft M .
PEG освобождает вас от необходимости отдельно использовать lex и синтаксический анализ, поэтому токен может быть контекстно-зависимым, не усложняя грамматику (как много токенов на многих языках), а некоторые реализации означают, что вам не нужно беспокоиться о левом / правом рекурсивные циклы.
Инструменты синтеза DSL объединяют грамматику на основе IDE с семантикой времени выполнения. Мартин Фаулер имеет книгу о DSL на своем сайте .
Но для языка определения пользовательского интерфейса, который является вводом для преобразования, первым делом будет XML или какое-либо другое стандартное отображение структуры (JSON, YAML), которое может выступать в качестве ввода в XSLT-процессор через интерфейс SAX. Я бы попробовал.