Если все, что вам нужно, - это простые операторы и выражения, я уверен, что разбирать каждую строку не будет ужасной задачей. Что-то вроде
if some flag
activate some feature
deactivate some feature
elif some other flag
activate some feature
activate some feature
else
logout
Просто напишите класс, который, в то время как синтаксический анализ берет первое слово, проверяет, является ли оно «if, elif, else» и т. Д., И, если это так, проверяет флаг и устанавливает флаг, говоря, что вы выполняете или не выполняете до следующий условный. Если это не условие, вызовите функцию, основанную на первом ключевом слове, которая каким-либо образом изменит состояние программы.
Класс может хранить некоторое локальное состояние выполнения (мы находимся в операторе if? Если да, то выполняем ли мы эту ветвь?) И иметь другой класс, содержащий некоторое глобальное состояние приложения (флаги, которые можно проверить с помощью операторов if и т. Д.).
Это, вероятно, неправильно в вашей ситуации (это очень подвержено ошибкам, это опасно, если вы неправильно обрабатываете данные в сценариях), но это, по крайней мере, начало, если вы решили интерпретировать свои собственный мини-язык.
Если серьезно, если вы попробуете это, будьте очень, очень осторожны. Не давайте сценариям никакой функциональности, которая им определенно не нужна, потому что вы почти наверняка открываете дыры в безопасности, делая что-то подобное.
Не говори, что я тебя не предупреждал.