diff --git a/lua.c b/lua.c index e71f6732..395aaa51 100644 --- a/lua.c +++ b/lua.c @@ -1,19 +1,24 @@ /* -** lua.c -** Linguagem para Usuarios de Aplicacao +** $Id: $ +** Lua stand-alone interpreter +** See Copyright Notice in lua.h */ -char *rcs_lua="$Id: lua.c,v 1.18 1997/06/19 18:55:40 roberto Exp roberto $"; #include #include -#include "lualoc.h" #include "lua.h" -#include "auxlib.h" +#include "luadebug.h" #include "lualib.h" +#ifndef OLD_ANSI +#include +#else +#define setlocale(a,b) 0 +#endif + #ifdef _POSIX_SOURCE #include #else @@ -21,74 +26,6 @@ char *rcs_lua="$Id: lua.c,v 1.18 1997/06/19 18:55:40 roberto Exp roberto $"; #endif -#define DEBUG 0 - -static void testC (void) -{ -#if DEBUG -#define getnum(s) ((*s++) - '0') -#define getname(s) (nome[0] = *s++, nome) - - static int locks[10]; - lua_Object reg[10]; - char nome[2]; - char *s = luaL_check_string(1); - nome[1] = 0; - while (1) { - switch (*s++) { - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - lua_pushnumber(*(s-1) - '0'); - break; - - case 'c': reg[getnum(s)] = lua_createtable(); break; - - case 'P': reg[getnum(s)] = lua_pop(); break; - - case 'g': { int n = getnum(s); reg[n] = lua_getglobal(getname(s)); break; } - - case 'G': { int n = getnum(s); - reg[n] = lua_rawgetglobal(getname(s)); - break; - } - - case 'l': locks[getnum(s)] = lua_ref(1); break; - case 'L': locks[getnum(s)] = lua_ref(0); break; - - case 'r': { int n = getnum(s); reg[n] = lua_getref(locks[getnum(s)]); break; } - - case 'u': lua_unref(locks[getnum(s)]); break; - - case 'p': { int n = getnum(s); reg[n] = lua_getparam(getnum(s)); break; } - - case '=': lua_setglobal(getname(s)); break; - - case 's': lua_pushstring(getname(s)); break; - - case 'o': lua_pushobject(reg[getnum(s)]); break; - - case 'f': lua_call(getname(s)); break; - - case 'i': reg[getnum(s)] = lua_gettable(); break; - - case 'I': reg[getnum(s)] = lua_rawgettable(); break; - - case 't': lua_settable(); break; - - case 'T': lua_rawsettable(); break; - - default: luaL_verror("unknown command in `testC': %c", *(s-1)); - - } - if (*s == 0) return; - if (*s++ != ' ') lua_error("missing ` ' between commands in `testC'"); - } -#else - lua_error("`testC' not active"); -#endif -} - - static void manual_input (void) { if (isatty(0)) { @@ -107,17 +44,17 @@ static void manual_input (void) int main (int argc, char *argv[]) { int i; - int result = 0; setlocale(LC_ALL, ""); - iolib_open (); - strlib_open (); - mathlib_open (); - lua_register("testC", testC); + lua_iolibopen (); + lua_strlibopen (); + lua_mathlibopen (); if (argc < 2) manual_input(); else for (i=1; i