Стройность / схема S-выражений

Я ищу инструменты, которые проверяют правильность / схему S-выражений.

Вам известны такие инструменты?

Как уточнил Пол Натан, я точно ищу валидатор Schema для sexp.

2 ответа

Решение

Я подозреваю, что OP вопрос о замене стека технологии XML на S-выражения и Lisp.

Идиоматический подход с S-выражениями заключается в реализации специальных валидаторов и преобразователей, адаптированных для конкретных форматов данных. Поскольку Лиспы почти декларативны (и они позволяют определять бесчисленные возможные декларативные языки поверх них), нет необходимости в специализированном, общем решении, таком как XML-схема или DTD.

В зависимости от используемого вами варианта Lisp, вы можете выбрать библиотеку соответствия шаблонов, подходящую для ваших нужд. Также могут помочь встроенные реализации Пролога (такие как Schelog).

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

atom := <character>+
sexp := atom | '(' sexp* ')'

То есть S-exp - это либо один атом, либо список из нуля или более S-выражений. Написание валидатора для этого не должно быть слишком сложным.

Другие вопросы по тегам