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));