Существуют ли какие-либо компиляторы XSLT для C ++? - PullRequest
3 голосов
/ 23 февраля 2010

Я нашел только одну попытку создать такой компилятор - http://sourceforge.net/projects/xsltc/. Но этот проект мертв уже десять лет. Есть ли другие примеры? Opensource или коммерческий?

Существуют ли какие-либо принципиальные технические трудности при создании такого программного обеспечения? При полном подходе к компиляции XSLT?

Полагаю, есть хорошие варианты использования его - места, где нам не нужно менять XSLT, но все же хотелось бы получить более высокую производительность (и, возможно, более низкие требования к памяти).

Существуют ли другие причины, по которым это программное обеспечение может быть не таким эффективным, как кажется? - Является ли интерпретация процессоров XSLT настолько эффективной, насколько вероятно будет скомпилированная?

Ответы [ 3 ]

2 голосов
/ 29 ноября 2013

Dr. Майкл Кей только что объявил Saxon / C http://www.saxonica.com/saxon-c/index.xml

С домашней страницы товара:

Saxon / C - это альфа-версия Saxon-HE по программированию на C / C ++ Платформа. В настоящее время предлагаются API для запуска XSLT 2.0 из C / C ++ или PHP. приложения.

Лицензия

Продукт с открытым исходным кодом. Основная лицензия Mozilla Public Лицензия версия 2.0. В большинстве случаев исходные файлы помечаются как «несовместимы с вторичными лицензиями», что означает, что код не может быть объединен с кодом, выданным по лицензии GPL ( Причиной этого является сложность контакта со всеми бывшими участниками чтобы получить их согласие.)

Некоторые компоненты лицензируются под лицензией Apache версии 2.0 или под лицензиями в стиле BSD. Для получения дополнительной информации о лицензировании см. лицензия

Скачать

Пожалуйста, нажмите на ссылку ниже, чтобы загрузить установщик Saxon-C.

libsaxon-HEC-setup.zip (30 МБ)

2 голосов
/ 23 февраля 2010

Насколько я понимаю, XSLT уже не очень популярен. Как правило, проще и эффективнее использовать вашу любимую XML-библиотеку на выбранном вами языке, анализировать XML-данные и писать код для форматирования выходных данных так, как вы этого хотите.

С другой стороны, похоже, что вы уже достигли определенного успеха. Есть случаи, когда это полезно. Проверьте этот вопрос SO для более подробной информации о плюсах и минусах XSLT.

В любом случае, разработчики программного обеспечения в целом не являются большими поклонниками XSLT, что объясняет, почему не было большого движения для написания оптимизированного парсера XSLT на C ++.

0 голосов
/ 24 февраля 2010

XSLT - это функциональный язык с некоторым сопоставлением с образцом.

Возможно, вы могли бы скомпилировать его как набор правил, ориентированных на шаблоны, а метаматчирование обеспечит эффективную обработку всех шаблонов, применимых в одно мгновение.

Составление шаблонно-ориентированных правил langauges довольно хорошо понято; см. работы по сетям Чарльза Форти в начале 80-х и их производным за последние двадцать лет.

Так что, если кто-то хотел это сделать, он мог. Где экономический стимул?

Если вы действительно хотите это сделать, вам нужен инструмент, который может обрабатывать XSLT как набор шаблонов. вместо того, чтобы использовать XML-процессор для обработки его как тупой XML-документ, в противном случае это выглядит так. И вы хотели бы иметь возможность манипулировать / составлять шаблоны и генерировать целевой машинный код. Вам понадобится инструмент, предназначенный для управления символическими структурами.

LISP был бы хорош, но не особенно хорош для синтаксического анализа XML (исправляемый с потом), и не особенно хорош для манипулирования сгенерированным кодом C ++ (исправимо только с огромным количеством пота, что маловероятно).

Наш набор инструментов для реинжиниринга программного обеспечения DMS - это система, предназначенная для обработки формальных документов как частей, по сути, так же, как компилятор обрабатывает исходный код как набор языковых структур. Он имеет синтаксические анализаторы XML и может манипулировать фрагментами кода C ++ по частям, по составу и может оптимизировать результат, применяя правила преобразования исходных текстовых кодов для оптимизации C ++. (Огромное количество пота уже вложено в манипуляции C ++).

Мы создали компиляторы правил, ориентированные на шаблоны, используя DMS не для XSLT, а скорее для компиляции этих правил преобразования программ от источника к источнику путем мета-сопоставления шаблонов и отслеживания состояния вызванных изменений. Вы получаете действительно большие автоматы (вроде того, как таблицы разбора LR становятся большими), которые могут реализовать перевод.

Хотя для XSLT этого не сделано.

...