Я давно начал работать над динамической визуализатором графиков, редактором и платформой тестирования алгоритмов (графы с узлами и дугами, а не с другими видами).
Для платформы тестирования алгоритма мне нужно позволить пользователю написать скрипт или вызвать скрипт из файла, который будет взаимодействовать с загруженным графиком. Визуализатор будет делать такие вещи, как подсвечивать узлы, пока они посещаются алгоритмом сценария, добавляя некоторую искусственную задержку, чтобы визуализировать алгоритм навигации и выполнения каких-либо задач.
Кроме того, сценарии также будут использоваться для добавления сторонних функций, которые я мог бы либо сделать доступными в виде уже существующих сценариев в папке программы, либо просто интегрировать их в программу на c ++ после того, как они будут протестированы и работают.
Все мои поиски переводчика для включения в мою программу отправили меня в Луа;
затем я начал писать свой собственный синтаксический анализатор рекурсивного спуска для своего собственного языка сценариев синтаксиса C-like (который я планировал использовать подмножество грамматики C ++, чтобы любой код, написанный на моем языке сценариев, можно было вставить в любой код C ++.
Это была интересная сумасшедшая идея, о которой я вообще не жалею: у меня есть области видимости, функции, циклы, переходы, безопасные переменные, выражения.
Но теперь, когда я подхожу к добавлению классов, методов классов, наследования (некоторые классы по умолчанию были бы необходимы для взаимодействия сценариев с программой), я понял, что потребуется много времени и усилий. Слишком много для личного проекта необразованного студента с экзаменами, чтобы учиться для ... но все же я хочу завершить этот проект.
Само навязываемое требование, чтобы скрипты были на 100% совместимы с C ++, было практически необходимым, это была бы просто небольшая приятная вещь, без которой я мог бы обойтись.
Теперь вопрос в том, есть ли альтернатива lua с c-подобным синтаксисом, который поддерживает все, что я уже сделал, плюс классы и наследование? (возможность добавления пользовательских «классов», которые связывают скрипты интерфейса с программой, обязательна)
(я не могу предположить, что у пользователя установлен полный компилятор c ++, поэтому я не могу просто скомпилировать их "скрипт" во время выполнения как dll для загрузки и вызова, хотя я хочу, чтобы я мог)