Manual Capitulo Seis

lua-users home
wiki

6. Intérprete de Lua

Aunque Lua ha sido diseñado para incrustar en un programa principal escrito en C -- es decir, es un lenguaje de extensión -- también es utilizado para escribir programas. La distribución estándar incluye un intérprete de Lua llamado lua el cual tiene todas las bibliotecas estándares incluyendo la de "debug".

Se usa así:


    lua [opciones] [archivo] [argumentos]

Las opciones son:

Después de interpretar las opciones, lua ejecuta el "script" dado pasándole los argumentos como cadenas. Llamado sin argumentos, lua se comporta como si fuera lua -v -i cuando stdin es una 'terminal' o sino como lua - .

Antes de ejecutar cualquier argumento, el intérprete consulta el variable de entorno LUA_INIT. Si tiene la forma @archivo, ejecuta tal archivo; sino ejecuta directamente el cotenido mismo.

Salvo por -i las opciones son interpretadas en su orden. Por ejemplo, la invocación:


    $ lua -e'a=1' -e 'print(a)' script.lua

va a asignar 1 a a, después imprimir el valor de a (es decir, 1), y finalmente ejecutar el archivo script.lua sin argumentos. (Aquí $ es el "shell prompt". El suyo puede ser diferente.)

Antes de empezar a ejecutar el "script", lua recopila todos los argumentos de la linea de comando, poniéndolos en una tabla global llamada arg. El nombre del archivo está puesto en el índice 0, el primer argumento después del archivo en el índice 1, y así sucesivamente. Argumentos antes del nombre del archivo (es decir, el nombre del intérprete más las opciones) están puestos en índices negativos. Por ejemplo, en la invocación:


    $ lua -la b.lua t1 t2

el intérprete empieza con el archivo a.lua y después crea la tabla:

    arg = { [-2] = "lua", [-1] = "-la",

            [0] = "b.lua",

            [1] = "t1", [2] = "t2" }

y finalmente corre el archivo b.lua. El "script" es llamado con arg[1], arg[2], … como argumentos; asimismo podría acceder a los argumentos con la expresión de varargs '...'

En modo interactivo, si escribe usted un renglón incompleto, el intérprete espera su terminación poniendo un "prompt" distinto.

Cuando la variable global _PROMPT es una cadena, se usa como el "prompt". Asimismo, cuando la variable global _PROMPT2 es una cadena, se usa como el "prompt" secundario (durante renglones incompletos). Por consecuencia, se puede cambiar ambos en la linea de comando, así:


    $ lua -e"_PROMPT='myprompt> '" -i

(La "" exterior es para el "shell"; la '' interior es para lua.) Tome nota del uso de -i para entrar en modo interactivo; sino el programa terminará sin aviso después de la asignación a _PROMPT. Un programa en Lua puede hacer lo mismo asignando un valor a la variable _PROMPT.

Para hacer posible el uso de Lua como intérprete de "scripts" en sistemas Unix, el intérprete ignora la primera linea de un "pedazo" si tal linea comienza con #. De esta manera, scripts de Lua pueden convertirse en programas ejecutables usando chmod +x y poniendo como primer linea la forma "shebang" #!:


    #!/usr/local/bin/lua

Por supuesto, la ubicación del intérprete de Lua podría ser diferente en su máquina. Si lua se encuentra en su PATH, una solución más portable sería

    #!/usr/bin/env lua


RecentChanges · preferences
edit · history
Last edited February 23, 2007 6:35 pm GMT (diff)