Привязки языка для языка спецификации Maude с использованием SWIG. Они используют модифицированную версию Maude, дополненную средством проверки модели для системы, управляемой стратегиями, которая также доступна через привязки.
Пакет Python доступен на PyPI. После установки с помощью pip install maude
его можно использовать напрямую, поскольку Maude встроен в пакет:
import maude
maude . init ()
nat = maude . getModule ( 'NAT' )
t = nat . parseTerm ( '1 + 2' )
t . reduce ()
print ( t )
Из этого репозитория можно собрать привязки для других языков, поддерживаемых SWIG, но им не была предоставлена специальная поддержка и тестирование. Конкретные инструкции для некоторых из них доступны здесь.
Этот репозиторий включает расширенную версию Maude в качестве подмодуля, который необходимо сначала клонировать с помощью git submodule update --init
или эквивалентной команды Git. Для сборки пакета Python используется scikit-build-core с помощью любой из стандартных команд:
python -m build # or
pip wheel .
Это приведет к тому, что Мод будет собран в каталоге subprojects
, для чего потребуется система сборки Meson, Ninja, а также различные внешние библиотеки и инструменты, как описано в ее репозитории. Альтернативно, скомпилированные версии Maude в виде библиотеки можно загрузить из раздела релизов и разместить в ожидаемых местах:
subprojects/maudesmc/installdir/lib
для библиотек иsubprojects/maudesmc/build
для заголовочного файла config.h
. В этом случае или при сборке Мод непосредственно из его подкаталога перед предыдущей командой следует добавить CMAKE_ARGS="-DBUILD_LIBMAUDE=OFF"
.
Привязки для других языков также можно создать напрямую с помощью CMake, где srcdir
— это каталог, в котором был клонирован репозиторий, а language
— это один из языков, поддерживаемых SWIG:
cmake <srcdir> -DLANGUAGE=<language>
cmake --build .
Для некоторых языковых целей этого будет достаточно, но для других можно ожидать дополнительных шагов.
Документация по пакету Python доступна здесь, и ее можно в значительной степени экстраполировать на другие целевые языки. Также доступна документация, созданная Javadoc. В дополнение к этому примеры в репозитории можно использовать в качестве справочника по различным темам:
test.py
match.py
.apply.py
.unify.py
.graph.py
.modelcheck.py
.vunarrow.py
.variants.py
.gui.py
buildTerm.py
.maudedoc.py
.loading.py
.metalevel.py
.hooks.py
.Более того, учебное пособие по библиотеке доступно в статье Мод как библиотека: эффективный универсальный программный интерфейс вместе с описанием ее дизайна и реализации.