Estoy hablando de C y/o C++ ya que son los únicos idiomas que conozco que se usan para intérpretes donde podría haber un problema:¿Cómo se relacionan los intérpretes escritos en C y C++ con los identificadores de las funciones C (++)?
Si tenemos un lenguaje interpretado X ¿cómo puede una biblioteca escrita para ello agregar funciones al idioma que luego se puede llamar desde programas escritos en el idioma? ejemplo
PHP:
substr($str, 5, 10);
- ¿Cómo es la función substr añade al "pool de funciones" de PHP para que pueda ser llamado desde scripts?
Es fácil para PHP almacenar todos los nombres de funciones registradas en una matriz y buscar a través de ella como una función se llama en una secuencia de comandos. Sin embargo, como obviamente no hay eval en C (++), ¿cómo se puede llamar a la función? Supongo que PHP no tiene 100MB de código como:
if(identifier == "substr")
{
return PHP_SUBSTR(...);
} else if(...) {
...
}
Jaja, eso sería muy gracioso. Espero que hayas entendido mi pregunta hasta ahora.
- ¿Cómo resuelven este problema los intérpretes escritos en C/C++?
- ¿Cómo puedo resolver esto para mi propio intérprete experimental de juguetes escrito en C++?
¿Estás preguntando qué estrategias intérpretes en ¿uso general? ¿Cómo podría un intérprete para C/C++ en particular hacer esto? ¿O cómo C/C++, cuando se compila, hace esto? – MtnViewMark
* ¿Cómo los intérpretes resuelven este problema? * ¿Cómo puedo resolver esto para mi propio intérprete experimental de juguetes? – sub