Interpretador Lua

200 views
Skip to first unread message

Nelson Cole

unread,
Jun 29, 2021, 4:18:15 PM6/29/21
to Lua BR
Olá pessoal!
Recentemente portei o Lua 1.0 para um sistema operacional hobby (criado por mim), mas sei quase nada sobre o Lua, alguém pode me dizer algo legal que eu faria com o Lua 1.0?

Tenho planos de portar uma versão mais recente do Lua.

O vídeo em anexo mostra um simples aplicativo Lua rodando em meu sistema.
Video.Guru_20210613_153841373.mp4

Denis Dos Santos Silva

unread,
Jun 30, 2021, 9:48:05 PM6/30/21
to Lua BR
mto interessante. comecei com o lua na versão 5.x nem cheguei a testar versões anteriores.

utilidades:
 - script de boot 
 - utilitarios diversos (substituicao de textos, calculo de expressoes, conversores, pre-processador, ...)
 - shell
 - auto-complete para a shell
 - macro (em apps gui)
 - manipulacao de arquivos




Nelson Cole

unread,
Jul 4, 2021, 5:21:58 AM7/4/21
to lua...@googlegroups.com
Pretendo compilador o lua 5.xx mas vai dar trabalho na reescrita do Makefile

--
Você recebeu essa mensagem porque está inscrito em um tema no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse tema, acesse https://groups.google.com/d/topic/lua-br/x1cpc0ZtNGM/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus temas, envie um e-mail para lua-br+un...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/d11c3463-7ac7-40b8-8ca5-3427712dd6fdn%40googlegroups.com.

Denis Dos Santos Silva

unread,
Jul 5, 2021, 11:19:58 AM7/5/21
to Lua BR
você pode ignorar o makefile que vem no projeto e compilar 'direto', segue abaixo um makefile bem simples/direto.

#
# arquivo makefile 'flat'
#
CC=gcc
CFLAGS=-std=c99 -DLUA_COMPAT_5_2 -O2
OBJ=lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o

all:
$(CC) $(CFLAGS) -c -o lapi.o lapi.c
$(CC) $(CFLAGS) -c -o lcode.o lcode.c
$(CC) $(CFLAGS) -c -o lctype.o lctype.c
$(CC) $(CFLAGS) -c -o ldebug.o ldebug.c
$(CC) $(CFLAGS) -c -o ldo.o ldo.c
$(CC) $(CFLAGS) -c -o ldump.o ldump.c
$(CC) $(CFLAGS) -c -o lfunc.o lfunc.c
$(CC) $(CFLAGS) -c -o lgc.o lgc.c
$(CC) $(CFLAGS) -c -o llex.o llex.c
$(CC) $(CFLAGS) -c -o lmem.o lmem.c
$(CC) $(CFLAGS) -c -o lobject.o lobject.c
$(CC) $(CFLAGS) -c -o lopcodes.o lopcodes.c
$(CC) $(CFLAGS) -c -o lparser.o lparser.c
$(CC) $(CFLAGS) -c -o lstate.o lstate.c
$(CC) $(CFLAGS) -c -o lstring.o lstring.c
$(CC) $(CFLAGS) -c -o ltable.o ltable.c
$(CC) $(CFLAGS) -c -o ltm.o ltm.c
$(CC) $(CFLAGS) -c -o lundump.o lundump.c
$(CC) $(CFLAGS) -c -o lvm.o lvm.c
$(CC) $(CFLAGS) -c -o lzio.o lzio.c
$(CC) $(CFLAGS) -c -o lauxlib.o lauxlib.c
$(CC) $(CFLAGS) -c -o lbaselib.o lbaselib.c
$(CC) $(CFLAGS) -c -o lbitlib.o lbitlib.c
$(CC) $(CFLAGS) -c -o lcorolib.o lcorolib.c
$(CC) $(CFLAGS) -c -o ldblib.o ldblib.c
$(CC) $(CFLAGS) -c -o liolib.o liolib.c
$(CC) $(CFLAGS) -c -o lmathlib.o lmathlib.c
$(CC) $(CFLAGS) -c -o loslib.o loslib.c
$(CC) $(CFLAGS) -c -o lstrlib.o lstrlib.c
$(CC) $(CFLAGS) -c -o ltablib.o ltablib.c
$(CC) $(CFLAGS) -c -o lutf8lib.o lutf8lib.c
$(CC) $(CFLAGS) -c -o loadlib.o loadlib.c
$(CC) $(CFLAGS) -c -o linit.o linit.c
# biblioteca estatica
ar rcu liblua.a $(OBJ)
ranlib liblua.a
# interpretador lua 
$(CC) $(CFLAGS) -c -o lua.o lua.c
$(CC) -o lua   lua.o liblua.a -lm
# compilador luac
$(CC) $(CFLAGS) -c -o luac.o luac.c
$(CC) -o luac   luac.o liblua.a -lm

$ make -f flat.mk
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lapi.o lapi.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lcode.o lcode.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lctype.o lctype.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ldebug.o ldebug.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ldo.o ldo.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ldump.o ldump.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lfunc.o lfunc.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lgc.o lgc.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o llex.o llex.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lmem.o lmem.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lobject.o lobject.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lopcodes.o lopcodes.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lparser.o lparser.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lstate.o lstate.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lstring.o lstring.c
In function ‘createstrobj’,
    inlined from ‘luaS_createlngstrobj’ at lstring.c:148:17,
    inlined from ‘luaS_newlstr’ at lstring.c:206:10:
lstring.c:142:17: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
  142 |   getstr(ts)[l] = '\0';  /* ending 0 */
In file included from ldebug.h:11,
                 from lstring.c:17:
lstring.c: In function ‘luaS_newlstr’:
lstate.h:213:18: note: at offset 0 to object ‘ts’ with size 24 declared here
  213 |   struct TString ts;
      |                  ^~
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ltable.o ltable.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ltm.o ltm.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lundump.o lundump.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lvm.o lvm.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lzio.o lzio.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lauxlib.o lauxlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lbaselib.o lbaselib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lbitlib.o lbitlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lcorolib.o lcorolib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ldblib.o ldblib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o liolib.o liolib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lmathlib.o lmathlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o loslib.o loslib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lstrlib.o lstrlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o ltablib.o ltablib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lutf8lib.o lutf8lib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o loadlib.o loadlib.c
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o linit.o linit.c
# biblioteca estatica
ar rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o
ranlib liblua.a
# interpretador lua
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o lua.o lua.c
gcc -o lua   lua.o liblua.a -lm
# compilador luac
gcc -std=c99 -DLUA_COMPAT_5_2 -O2 -c -o luac.o luac.c
gcc -o luac   luac.o liblua.a -lm




#
# instalação padrão
#
$ tar zxvf lua-5.3.6.tar.gz
$ cd lua-5.3.6/src
$ make clean generic
rm -f liblua.a lua luac lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o  lua.o luac.o
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lapi.o lapi.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lcode.o lcode.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lctype.o lctype.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o ldebug.o ldebug.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o ldo.o ldo.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o ldump.o ldump.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lfunc.o lfunc.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lgc.o lgc.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o llex.o llex.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lmem.o lmem.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lobject.o lobject.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lopcodes.o lopcodes.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lparser.o lparser.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lstate.o lstate.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lstring.o lstring.c
In function ‘createstrobj’,
    inlined from ‘luaS_createlngstrobj’ at lstring.c:148:17,
    inlined from ‘luaS_newlstr’ at lstring.c:206:10:
lstring.c:142:17: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
  142 |   getstr(ts)[l] = '\0';  /* ending 0 */
In file included from ldebug.h:11,
                 from lstring.c:17:
lstring.c: In function ‘luaS_newlstr’:
lstate.h:213:18: note: at offset 0 to object ‘ts’ with size 24 declared here
  213 |   struct TString ts;
      |                  ^~
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o ltable.o ltable.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o ltm.o ltm.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lundump.o lundump.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lvm.o lvm.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lzio.o lzio.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lauxlib.o lauxlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lbaselib.o lbaselib.c
 gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lbitlib.o lbitlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lcorolib.o lcorolib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o ldblib.o ldblib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o liolib.o liolib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lmathlib.o lmathlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o loslib.o loslib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lstrlib.o lstrlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o ltablib.o ltablib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lutf8lib.o lutf8lib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o loadlib.o loadlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o linit.o linit.c
ar rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o
ranlib liblua.a
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o lua.o lua.c
gcc -std=gnu99 -o lua   lua.o liblua.a -lm
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2     -c -o luac.o luac.c
gcc -std=gnu99 -o luac   luac.o liblua.a -lm

Nelson Cole

unread,
Jul 8, 2021, 2:24:12 AM7/8/21
to lua...@googlegroups.com
Obrigado pela ajuda, quando tiver mais tempo farei a compilação do lua 5.2.3

Eu uso o GCC e LD para gerar o executável.

Nelson Cole

unread,
Jul 8, 2021, 2:25:14 AM7/8/21
to lua...@googlegroups.com
Aliás este é o Lua 5.3.6

Denis Dos Santos Silva

unread,
Jul 8, 2021, 7:00:56 PM7/8/21
to Lua BR
tranquilo.

se tu precisar de um voluntario eventual, podemos, fazer algo parecido com o 'ports' do freebsd e ir criando aos poucos pacotes.

Nelson Cole

unread,
Jul 9, 2021, 11:10:15 AM7/9/21
to lua...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages