2 * min.c -- a minimal Lua interpreter
3 * loads stdin only with minimal error handling.
4 * no interaction, and no standard library, only a "print" function.
10 static int print(lua_State *L)
16 if (i>1) printf("\t");
17 if (lua_isstring(L,i))
18 printf("%s",lua_tostring(L,i));
19 else if (lua_isnil(L,i))
21 else if (lua_isboolean(L,i))
22 printf("%s",lua_toboolean(L,i) ? "true" : "false");
24 printf("%s:%p",lua_typename(L,lua_type(L,i)),lua_topointer(L,i));
30 static const char *getF(lua_State *L, void *ud, size_t *size)
33 static char buff[512];
34 if (feof(f)) return NULL;
35 *size=fread(buff,1,sizeof(buff),f);
36 return (*size>0) ? buff : NULL;
41 lua_State *L=lua_open();
42 lua_register(L,"print",print);
43 if (lua_load(L,getF,stdin,"=stdin") || lua_pcall(L,0,0,0))
44 fprintf(stderr,"%s\n",lua_tostring(L,-1));