Eu chamaria esse tipo de coisa de "intérprete". Já usei algumas ferramentas de desenvolvimento padrão lex
(na verdade flex
) e yacc
ou bison
. Para explodir meu próprio chifre, meu interpretador de lógica combinatória funciona praticamente como você descreve, e você pode encontrar Stackoverflow respostas que recomendam esse caminho. Muitos tutoriais existe na web (de qualidade variável) para lex
e yacc
. Os tutoriais podem falar de construir compiladores, mas o código flex
-gerer reconhecido reconhece o uso interativo e age de acordo. Além disso, o exemplo canônico de algo nesse tipo de intérprete é uma "calculadora científica". Não deixe que esse tipo de coisa te incomoda. Se você puder definir os comandos desejados, poderá criar uma gramática BNF para ela em bison
. Você pode ter que repetir algumas vezes, mas os compromissos não serão tão ruins assim.