Incrustar un lenguaje de progtwigción en un progtwig

Me gustaría agregar algún grado de “capacidad de script” a una aplicación que estoy escribiendo. En términos generales, me gustaría una forma de integrar una API de lenguaje de progtwigción en mi progtwig. He visto TinyPy, pero me preocupa que, dado su pequeño tamaño, podría ser engañosamente limitante (es decir, se parece a Python, pero carece de muchas de las características de Python).

No busco escribir mi propio lenguaje de progtwigción; Me gustaría simplemente tomar un lenguaje relativamente conocido en el que los usuarios puedan escribir funciones y luego poder llamar a esas funciones / pasar esos parámetros de funciones desde mi aplicación, que se escribirá en C.

También me gustaría tener acceso a cualquier tipo de datos del que regresen las funciones, también desde dentro de C.

¿Alguien tiene alguna sugerencia en cuanto a una API / biblioteca para usar, que sea ligera, con muchas funciones y una biblioteca de C relativamente fácil de usar o fácil de entender?

¡Gracias!

Es posible que desee ver SpiderMonkey , que le permitirá integrar un motor Javascript en su progtwig C.

Lua es una opción popular.

La mayoría de los lenguajes de scripting tienen buenas interfaces con C. Los que he echado un vistazo son Perl, Python y Lua. Si sus usuarios no son progtwigdores serios, le aconsejo que no pierda a Perl. Si son jugadores serios de World of Warcraft, es posible que ya estén familiarizados con Lua y que estén escribiendo código Lua para interactuar con un progtwig comstackdo, por lo que puede ser una buena opción.

Siempre se puede usar ‘c’ con el kit de herramientas ch .
Como dijiste, Python es bueno, especialmente si puedes usar la envoltura boost :: python.
Otra opción popular es Javascript, es usado por el sistema de scripting de Qt.

Lua y la jerga fueron inventados solo para esto. Lua tiene algunas características interesantes para el código de la caja de arena, por lo que si los usuarios pueden proporcionar el código, puede intentar limitar su capacidad para dispararse a sí mismos en el pie.

Los sabores de lisp se han utilizado para esto (famoso en gnu emacs).

Realmente necesita pensar en qué tipo de cosas se utilizará el lenguaje incorporado y luego pensar en el tipo de idiomas en los que le gustaría escribir esa funcionalidad, leer el código que otros han escrito y satisfacer fácilmente que el código Fue correcto, o al menos fácilmente depurarlo.

GUILE es el Lenguaje Inteligente Ubicuo de Extensión de GNU. Es un dialecto Scheme (dialecto LISP). Antes de que grites sobre LISP, considera que AutoCAD usaba LISP como el lenguaje de extensión, y al menos un importante sistema de procesamiento de textos de secretaría lo usaba, y las secretarias no tuvieron problemas en escribir extensiones para sus tareas particulares. (Parece que la gente no se da cuenta de que se supone que la progtwigción es difícil si no les dices que están haciendo progtwigción).

El lenguaje conocido más común es javascript. Hay algunos buenos y simples (bueno, en realidad no lo más simples posible si lo comparas con Lua, por ejemplo) para incluir intérpretes de Javascript.

No has dicho nada de bibliotecas externas. Al igual que Lua, estos sistemas javascript están desnudos. No se proporciona mucho para la comunicación con la palabra exterior. Eso contrasta con Ruby y Python, donde se obtiene un sistema que incluye baterías con las millones de funciones de la biblioteca de tiempo de ejecución.

Comience leyendo esto:

¿Por qué incrustar JavaScript?

Cómo incrustar el motor de JavaScript