Я нашел только одну попытку создать такой компилятор – http://sourceforge.net/projects/xsltc/ . Но этот проект уже мертв уже десять лет. Есть ли другие примеры? Открыт или коммерческий?
Существуют ли какие-либо фундаментальные технические трудности при создании такого программного обеспечения? С полным подходом к составлению XSLT изначально?
Я полагаю, что для его использования есть хорошие варианты использования – места, где нам не нужно менять XSLT, но все же хотелось бы получить более высокую производительность (и, возможно, более низкие требования к памяти).
Есть ли другие причины, по которым это программное обеспечение может быть не столь эффективным, как кажется? – Возможно, интерпретируют XSLT-процессоры как эффективные, чем скомпилированные?
По моему мнению, XSLT не очень популярен. Как правило, проще и эффективнее использовать вашу любимую библиотеку XML для выбранного вами языка, анализировать данные XML и писать код для форматирования вывода так, как вы хотите.
С другой стороны, похоже, что у вас уже был некоторый успех. Бывают случаи, когда это полезно. Проверьте этот вопрос , чтобы узнать больше о преимуществах и недостатках XSLT.
Во всяком случае, разработчики программного обеспечения в целом не являются большими поклонниками XSLT, что объясняет, почему не было большого движения, чтобы написать оптимизированный синтаксический анализатор XSLT на C ++.
Д-р Майкл Кей только что объявил Саксон / C http://www.saxonica.com/saxon-c/index.xml
На домашней странице продукта:
Saxon / C – это альфа-релиз Saxon-HE на платформе программирования C / C ++. API в настоящее время предлагаются для запуска XSLT 2.0 из приложений C / C ++ или PHP.
Лицензия
Продукт является открытым исходным кодом. Первичной лицензией является версия Public License версии 2.0. В большинстве случаев исходные файлы помечены как «несовместимые со вторичными лицензиями», а это значит, что код нельзя комбинировать с кодом, выпущенным в соответствии с лицензией GPL (причина в том, что это сложность обращения ко всем прошлым вкладчикам, чтобы получить согласие .)
Некоторые компоненты лицензируются по лицензии Apache версии 2.0 или под лицензиями BSD. Для получения дополнительной информации о лицензировании см. Лицензию
Скачать
Чтобы загрузить программу установки Saxon-C, нажмите на ссылку ниже.
libsaxon-HEC-setup.zip (30 МБ)
XSLT является функциональным langauge с некоторым сопоставлением с образцом.
Вы могли бы, возможно, скомпилировать его как набор правил, управляемых шаблонами, с метаметрическим контролем, чтобы все шаблоны, применяемые в одно мгновение, эффективно обрабатывались.
Компиляция графических правил langauges довольно хорошо понята; см. работу над сетями Рэт Чарльза Форти в начале 80-х годов и деривативами за последние двадцать лет.
Поэтому, если кто-то захочет это сделать, они могут это сделать. Где экономический стимул?
Если вы действительно хотите это сделать, вам нужен инструмент, который может обрабатывать XSLT как набор шаблонов, а не использовать XML-процессор для обработки XML-документа asdumb в противном случае. И вы хотите иметь возможность манипулировать / составлять шаблоны и генерировать целевой машинный код. Вам понадобится инструмент, предназначенный для управления символическими структурами.
LISP был бы хорош, но не очень хорошо разбирается XML (фиксируется с потетьем), и не очень хорошо манипулирует сгенерированным кодом C ++ (фиксируется только с огромным количеством пота настолько маловероятным).
Наш инструментарий DMS Software Reengineering Toolkit – это система, предназначенная для обработки формальных документов как частей по существу таким же образом, как компилятор рассматривает исходный код как набор структур langauge. Он имеет синтаксические анализаторы XML и может обрабатывать фрагменты кода C ++ по частям, по составу и может оптимизировать результат, применяя правила преобразования программ с исходным кодом в C ++. (Огромное количество пота уже вложено в C ++-манипуляцию).
Мы сделали шаблонные компиляторы правил с использованием DMS, а не для XSLT, а скорее для компиляции этих правил преобразования программ источника в источник, путем сопоставления шаблонов и отслеживания состояния индуцированных изменений. Вы получаете действительно большие автоматы (вроде того, как таблицы разбора LR становятся большими), которые могут реализовать перевод.
Однако это не сделано для XSLT.