[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Re Atari BASIC versis Python versus Lua in 1982...
- From: Sean Conner <sean@...>
- Date: Fri, 17 Mar 2017 16:19:17 -0400
It was thus said that the Great Laurent FAILLIE once stated:
> Very interesting discussion, indeed :)
> When I started with Lua, I made a parallel with the BASIC (the one from
> 80', the real one, not VB with is far away vs original BASIC concept) :
Even the version in the 80s wasn't the "real one"---the real one would be
BASIC from Dartmouth College in 1964.
> Lua syntax is simple and accessible (for basic tasks), learning curve is
> very fast and even non programmer can progress easily.
> But I faced rapidly 2 pitfalls :- the 1st one is strings manipulation :
> sooner, you need to master RegEx to do even simple tasks with strings and
> I think it's a showstopper for beginners.
> Lua is missing simple but
> powerful string manipulation functions as the Basic has.
What? All I recall of BASIC string manipulations are LEFT$(), RIGHT$(),
MID$() and STRING$(), all of which can be replaced with string.sub() in Lua.
I recall those being pretty typical of the time.
> Finally, I succeeded and I'm "proud" of results :
> https://github.com/destroyedlolo/Selene and
> https://github.com/destroyedlolo/Marcel which are matching my
> objectives.As you can see, I'm sticking with 5.1 ... because
> luaL_register() has been deprecated and I was unable to find a clear way
> to migrate code like
>
> | static const struct luaL_reg SelSurfaceLib [] = { |
> | {"BlittingFlagsConst", BlittingFlagsConst}, |
> | ... , |
> | {"CircleQuarterConst", CircleQuarterConst}, |
> | {"create", createsurface}, |
> | {NULL, NULL} |
> | }; |
>
> | static const struct luaL_reg SelSurfaceM [] = { |
> | {"Release", SurfaceRelease}, |
> | {"destroy", SurfaceRelease}, /* Alias */ |
> | ... |
> | {"restore", SurfaceRestore}, |
> | {NULL, NULL} |
> | }; |
> | void _include_SelSurface( lua_State *L ){ |
^ Just a note---identifiers starting with a leading underscore are
reserved for the C compiler, not for user code. That aside ...
> | luaL_newmetatable(L, "SelSurface"); |
> | lua_pushstring(L, "__index"); |
> | lua_pushvalue(L, -2); |
> | lua_settable(L, -3); /* metatable.__index = metatable */ |
> | luaL_register(L, NULL, SelSurfaceM); |
> | luaL_register(L,"SelSurface", SelSurfaceLib); |
> }
>
> to newer Lua :(
void include_SelSurface(lua_State *L)
{
luaL_newmetatable(L,"SelSurface");
lua_pushvalue(L,-1);
lua_setfield(L,-2,"__index");
luaL_setfuncs(L,SelSurfaceM,0);
luaL_newlib(L,SelSurfaceLib);
lua_setglobal(L,"SelSurface");
}
-spc