Реализация XPath над S-выражениями 2007 Миленин Евгений, гр. 544 Кафедра Системного Программирования Математико-Механический ф-т, СПбГУ Научный руководитель: О.А. Паращенко Рецензент: Д.Ю. Булычев
S-выражения Согласно неформальному определению: атомарное значение (строка, число и т.д.) список атомарных значений или s- выражений Базовые примитивы car и cdr Удобно рассматривать как деревья в префиксной форме записи Семантически близки XML
Пример (Scheme) Решение - XPath //my-string[my-string] (define (my-hello who. rest) (display "Hello,_") (display (my-string (my-string who))) (display "!\n")) Hello,_ !

Мотивы и актуальность работы Microsoft XLinq, но для Lisp Lisp старше XML, но до сих пор нет специальных инструментов Есть исследования. TRX (Regular-tree pattern language; Olin Shivers ) – аналоги RELAX NG, XDUCE SXPath для SXML – среди родственных работ
Постановка задачи Предложить новый подход для работы с s-выражениями при помощи стандарта XPath Построить отображение для произвольного s-выражения Реализовать библиотеку на языке Scheme
Применяемый подход Отображение s-выражений на XPath Data Model Использование проекта Generative XPath для реализации библиотеки
Реализация Устройство узла (box) parent pointers сравнение узлов – ORDPATH (MS SQL Server) реализация осей и свойств узлов
Использование библиотеки Применение: Переформулировать задачу в терминах XPath Data Model Скомпилировать XPath запрос Boxing/unboxing Уже используется в GXPath для компиляции XPath выражений для invalid XML имён Предполагается использовать для оптимизации генерируемого кода в GXPath
Выводы Реализована библиотека на языке Scheme Основная цель - повышение эффективности труда программиста. Пример //a[b] Вопросы производительности Практическая польза библиотеки, научный интерес Релиз на
Спасибо за внимание! Вопросы?