Achei 1 erro no interpretador

133 views
Skip to first unread message

Leonardo Nakamoto

unread,
Nov 12, 2021, 11:13:04 AM11/12/21
to lua...@googlegroups.com
Olá,
Achei 1 pequeno erro no interpretador, o código:

string.upper(io.read())

Não deixa a letra com acentuação maiúscula, por exemplo, se digita "não", o interpretador não traduz pra "NÃO" e sim para "NãO".

Denis Dos Santos Silva

unread,
Nov 13, 2021, 3:39:21 PM11/13/21
to Lua BR
não acho que seja um erro de interpreador, mas, um comportamento bem conhecido.

a linguagem lua é escrita em C e com isso vem seu comportamento em muitas coisas, nessa situação apontada, faz o uso do toupper().
a tabela "ASCII"* vai de 0 a 127 e a maioria dessas funções de manipulação de string tem essa "previsão".
já a tabela "ISO-LATIN1"** vai de 0 a 255 essa contém acentuação.

alternativas:
1- fazer uma tabela para mapear a acentuação
2- adotar UTF-8
3- usar os.setlocale()  pode ajudas, mas, nunca usei


--- lua-5.1.5 lstrlib.c
static int str_upper (lua_State *L) {
  size_t l;
  size_t i;
  luaL_Buffer b;
  const char *s = luaL_checklstring(L, 1, &l);
  luaL_buffinit(L, &b);
  for (i=0; i<l; i++)
    luaL_addchar(&b, toupper(uchar(s[i])));
  luaL_pushresult(&b);
  return 1;
}

Leonardo Nakamoto

unread,
Nov 13, 2021, 7:34:26 PM11/13/21
to lua...@googlegroups.com
Por coincidência recebi a mesma resposta no fórum do Solar2D em inglês hoje.
Resolvi escrevendo o código como:
nao = "NãO".
Obrigado pela dica de acrecentar a lib, não tinha ouvido falar dele.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, 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/2f1e580c-44db-4e65-b29d-b0877812bc26n%40googlegroups.com.

Denis Dos Santos Silva

unread,
Nov 14, 2021, 5:47:43 AM11/14/21
to Lua BR
se puder colar o link pode ajudar alguém no futuro.

Leonardo Nakamoto

unread,
Nov 14, 2021, 10:48:05 AM11/14/21
to lua...@googlegroups.com
Oops,
Foi na comunidade de lua em inglês do Telegram.

Screenshot_20211114-124710_Nekogram X.jpg
Reply all
Reply to author
Forward
0 new messages