Библиотека SolverShell - это средство для описания предметно-ориентированных языков (Domain-Specific Languages, DSL) и построения их интерпретаторов. Она разработана на языке C++ с использованием инструмента сборки CMake.
- Построение языка: Библиотека позволяет описывать и определять синтаксис, грамматику и семантику предметно-ориентированных языков.
- Интерпретация языка: SolverShell обеспечивает возможность создания интерпретаторов для различных предметно-ориентированных языков.
- Поддержка пользовательских расширений: Библиотека предоставляет механизмы для добавления пользовательских функций и операций в язык.
- Компилятор C++17 или выше
- CMake версии 3.23 и выше
git clone https://github.com/shmelkovaleksandr/SolverShell.git
cd SolverShell
git submodule init
git submodule update
mkdir build && cd build
cmake ..
make#include "SOSH/API.h"
int Sub(int a, int b) {
return a - b;
};
int main() {
// Регистрация пользовательской фунции
SOSH_Function sub_func("sub", Sub);
sub_func.AddArgs(Token_t::SOSH_INT);
sub_func.AddArgs(Token_t::SOSH_INT);
sub_func.AddReturn(Token_t::SOSH_INT);
SOSH_Function_Base& sub_func_base = sub_func;
// Группировка пользовательской фунции
SOSH_Shell shell("Shell");
shell.AddFunction(sub_func_base);
SOSH_Token result(Token_t::SOSH_UNDEFINED, "Empty.");
// Получение команды
std::string input = "sub 6 -3";
// Интерпретация кода на предметно-ориентированном языке
result = SOSH_Interpreter::evaluate(input, shell);
// Вывод результата
std::cout << "Result: " << result.GetValue() << std::endl;
return 0;
};
This project is licensed under the MIT License - see the LICENSE file for details.