ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » РусЛуа » Каким образом print дополнен словом "печать"?


Каким образом print дополнен словом "печать"?

Сообщений 1 страница 5 из 5

1

Как по английскому имени функции определить русское слово которое нужно использовать?
(справки-то по именам функций стандартных библиотек не написано)

0

2

Лис написал(а):

Как по английскому имени функции определить русское слово которое нужно использовать?

Однозначно и автоматически - никак, данного недостаточно для перевода.
Руками: проверяется каждое слово[сочетание] из словаря.
Глазами: автоматически генерируется каждая подстановка и выбирается нужное.

Отредактировано MihalNik (2018-10-24 20:13:40)

0

3

Я не абстрактно спрашиваю, а конкретно. Конкретно в РусЛуа уже есть как минимум одно русифицированное название функции.
Конечно можно найти его (слово "печать") поиском в репозитории РусЛуа и посмотреть, какие там ещё слова есть.
Но почему это должен делать каждый пользователь, а не разработчики?

Смотрю исходник через web-интерфейс github, и вижу там:

Код:
static const char *const luaX_tokens_cyr [] = {
    "è", "ñòîï", "íà÷àëî", "èíà÷å", "èíà÷ååñëè",
    "êîíåö", "ëîæü", "äëÿ", "ôóíêöèÿ", "èäèíà", "åñëè",
    "èç", "ëîêàë", "íóëü", "íå", "èëè", "ïîâòîðÿòü",
    "âîçâðàò", "òîãäà", "èñòèíà", "ïîêóäà", "ïîêà",
    "//", "..", "...", "==", ">=", "<=", "!=",

};

Вот зачем так делать (внешнюю кодировку исходных текстов в Windows-1251) ? Трудно было в UTF-8 закоммитить?

Отредактировано Лис (2018-10-24 20:40:04)

0

4

Трудно было в UTF-8 закоммитить?

Потому что в винде используется эта кодировка по умолчанию (при это имена в файловой системе все равно кодируются в UTF). Существуют овердофига программ, которые работают в винде исключительно в данной кодировке.

Отредактировано utkin (2018-10-25 09:19:48)

0

5

static const luaL_Reg base_funcs[] = {
  {"assert", luaB_assert},
  {"collectgarbage", luaB_collectgarbage},
  {"dofile", luaB_dofile},
  {"error", luaB_error},
  {"getmetatable", luaB_getmetatable},
  {"ipairs", luaB_ipairs},
  {"loadfile", luaB_loadfile},
  {"load", luaB_load},
#if defined(LUA_COMPAT_LOADSTRING)
  {"loadstring", luaB_load},
#endif
  {"next", luaB_next},
  {"pairs", luaB_pairs},
  {"pcall", luaB_pcall},
  {"print", luaB_print},
  {"rawequal", luaB_rawequal},
  {"rawlen", luaB_rawlen},
  {"rawget", luaB_rawget},
  {"rawset", luaB_rawset},
  {"select", luaB_select},
  {"setmetatable", luaB_setmetatable},
  {"tonumber", luaB_tonumber},
  {"tostring", luaB_tostring},
  {"type", luaB_type},
  {"xpcall", luaB_xpcall},
  /* placeholders */
  {"_G", NULL},
  {"_VERSION", NULL},

  {"утв", luaB_assert},
  {"собратьмусор", luaB_collectgarbage},
  {"испфайл", luaB_dofile},
  {"ощибка", luaB_error},
  {"взятьметатаблицу", luaB_getmetatable},
  {"ипары", luaB_ipairs},
  {"загрузитьфайл", luaB_loadfile},
  {"загрузить", luaB_load},
#if defined(LUA_COMPAT_LOADSTRING)
  {"загрузитьстроку", luaB_load},
#endif
  {"выбор", luaB_select},
  {"устметатаблицу", luaB_setmetatable},
  {"следующий", luaB_next},
  {"пары", luaB_pairs},
  {"рвызов", luaB_pcall},
  {"печать", luaB_print},
  {"сравнитьнапрямую", luaB_rawequal},
  {"длинанапрямую", luaB_rawlen},
  {"взятьнапрямую", luaB_rawget},
  {"устнапрямую", luaB_rawset},
  {"вчисло", luaB_tonumber},
  {"встроку", luaB_tostring},
  {"тип", luaB_type},
  {"хрвызов", luaB_xpcall},
  {"_ОКР", NULL},
  {"_ВЕРСИЯ", NULL},
  {NULL, NULL}
};

никакого "чтение", как парного к "печать" тут не видно...

Где вообще может быть функция *_read ?

# grep  "_read" *.utf8
lbaselib.c.utf8:static const char *generic_reader (lua_State *L, void *ud, size_t *size) {
lbaselib.c.utf8:    status = lua_load(L, generic_reader, NULL, chunkname, mode);
liolib.c.utf8:static int io_readline (lua_State *L);
liolib.c.utf8:  lua_pushcclosure(L, io_readline, 3 + n);
liolib.c.utf8:static int g_read (lua_State *L, FILE *f, int first) {
liolib.c.utf8:static int io_read (lua_State *L) {
liolib.c.utf8:  return g_read(L, getiofile(L, IO_INPUT), 1);
liolib.c.utf8:static int f_read (lua_State *L) {
liolib.c.utf8:  return g_read(L, tofile(L), 2);
liolib.c.utf8:static int io_readline (lua_State *L) {
liolib.c.utf8:  for (i = 1; i <= n; i++)  /* push arguments to 'g_read' */
liolib.c.utf8:  n = g_read(L, p->f, 2);  /* 'n' is number of results */
liolib.c.utf8:  {"read", io_read},
liolib.c.utf8:  {"read", f_read},
lua.c.utf8:** lua_readline defines how to show a prompt and then read a line from
lua.c.utf8:** lua_freeline defines how to free a line read by lua_readline.
lua.c.utf8:#if !defined(lua_readline) /* { */
lua.c.utf8:#define lua_readline(L,b,p) ((void)L, ((b)=readline(p)) != NULL)
lua.c.utf8:#define lua_readline(L,b,p) \
lua.c.utf8:  int readstatus = lua_readline(L, b, prmt);
lundump.c.utf8:  if (luaZ_read(S->Z, b, size) != 0)
lzio.c.utf8:size_t luaZ_read (ZIO *z, void *b, size_t n) {
lzio.h.utf8:LUAI_FUNC size_t luaZ_read (ZIO* z, void *b, size_t n); /* read next n bytes */

Возможно вот это оно:
liolib.c.utf8:  {"read", io_read},
liolib.c.utf8:  {"read", f_read},

Смотрим на таблицу функций:

/*
** functions for 'io' library
*/
static const luaL_Reg iolib[] = {
  {"close", io_close},
  {"flush", io_flush},
  {"input", io_input},
  {"lines", io_lines},
  {"open", io_open},
  {"output", io_output},
  {"popen", io_popen},
  {"read", io_read},
  {"tmpfile", io_tmpfile},
  {"type", io_type},
  {"write", io_write},
  {NULL, NULL}
};

Перевода нет.

На этом написание русского парсера на РусЛуа можно считать проваленным, т.к. невозможно по-русски считать файл.

Отредактировано Лис (2018-10-30 07:25:54)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » РусЛуа » Каким образом print дополнен словом "печать"?