Page 5 of 7

Re: Порт LUA

Posted: Tue May 10, 2011 8:54 am
by Albom
думаю, достаточно реализовать всего лишь одну доступную для пользователя функцию - что-то вроде lib_load, на вход которой подаётся имя библиотеки, а возвращать она будет таблицу функций (которые на самом деле-то являются указателями на определённый код, так что ничего сложного не должно быть). но вот как из lua такие функции вызывать - вопрос, не знаю проверяет ли интерпретатор количество и тип параметров... и насчёт передачи параметров - думаю, lua использует stdcall, так что надо и это учесть.

насчёт кода импорта функций из динамических библиотек:
http://redmine.kolibrios.org/projects/k ... /kolibri.c
строки 235-285

Re: Порт LUA

Posted: Tue May 10, 2011 10:38 am
by SoUrcerer
У луа своя система вызовов.Я посмотрю на код разных библиотек и подумаю,что с ним делать.А еще посмотрю на код поддержки библиотек в самой луа.Но займусь этим не скоро.Еще много работы над шрифтами

Re: Порт LUA

Posted: Tue May 10, 2011 12:52 pm
by SoUrcerer
Eruman wrote:Для новичков:
Пока вопросы копятся. Запустил Lua, пример с таблицей вылетает с символом #, только номер строки другой. Стал исключать строки для поиска ошибки.
Еще непонятно, скармливаю выражение :
i[1] = 1
Прога вылетает без сообщений об ошибке на доске. Так и должно быть?
1) Баг повторить не удается. Оба варианта у меня работают замечательно с рамдрайва на ядре 1739, и на том же ядре не работают нормально с жесткого диска (так и должно быть). С новым ядром работает отовсюду. Может, дело в какой-то ошибке файловой системы?

2) У меня выводится сообщение об ошибке на доску. В lua нужно инициализировать таблицы. Вот так:

Code: Select all

i={}
i[1]=1

Re: Порт LUA

Posted: Wed Jul 20, 2011 11:37 pm
by XVilka
Есть какие-либо новости в работе над Lua?

Re: Порт LUA

Posted: Wed Jul 20, 2011 11:52 pm
by SoUrcerer
Возможно скоро сделаю луа 5.2b8 или какой там последний.Что делать с библиотеками-так и не придумал.Заявок на перенос функций системы в стандартную библиотеку не поступало.

Re: Порт LUA

Posted: Thu Jul 21, 2011 10:40 pm
by XVilka
может сделать модуль kolibri. ?
например kolibri.window_new(x, y, height, width) ?

Re: Порт LUA

Posted: Thu Jul 21, 2011 10:57 pm
by SoUrcerer
XVilka wrote:может сделать модуль kolibri. ?
например kolibri.window_new(x, y, height, width) ?
Пробовал. Разницы никакой. Если посмотреть на разные расширения для lua, то добавление системных функций в основную библиотеку - обычная практика.

Re: Порт LUA

Posted: Thu Jul 21, 2011 11:16 pm
by XVilka
А по поводу обертки - возможно загружать динамически функции в луа. см. C API - просто пропихивать в стек имена функции и указатели на них, а также параметры

Re: Порт LUA

Posted: Fri Jul 22, 2011 12:37 am
by SoUrcerer
Блин, точно ведь. Как сразу до меня не дошло :(
Сложновато будет с типами данных только.

Re: Порт LUA

Posted: Sat Nov 19, 2011 1:55 pm
by XVilka
по поводу динамической загрузки библиотек - советую посмотреть в сторону luaffi или libffi http://luajit.org/ext_ffi.html

Re: Порт LUA

Posted: Mon Dec 19, 2011 10:30 pm
by SoUrcerer
Lua 5.2.0
Теперь официально.

Добавлены команды ввода-вывода через консоль:

Code: Select all

copen() - открыть окно консоли
cclose() - закрыть окно консоли
cprintf() - вывести на экран что-нибудь 
cgets() - считать строку с клавиатуры 
Пример программы:

Code: Select all

copen()
cprintf("Hello! What is your name?\n")
name=cgets()
cprintf("Nice to meet you, ",name,"!\n")
a=3
b=2
c=a+b
cprintf("I know: a+b=",c,"\n")
cclose()

Re: Порт LUA (5.2.0)

Posted: Sun Apr 08, 2012 9:49 pm
by XVilka
Лучше перенести эти команды в в модуль "console" или "os" или подобное, так будет больше совместимости и идеологически правильнее.

Re: Порт LUA (5.2.0)

Posted: Sun Apr 08, 2012 10:09 pm
by SoUrcerer
Когда я это делал, я вообще не представлял, как модули делать. Сейчас чуть лучше представляю. Так что возможно вообще уберу эти функции и добавлю нормальный вызов библиотек и ассемблерных вставок (о_О, да!)

Re: Порт LUA (5.2.0)

Posted: Thu Apr 12, 2012 8:49 pm
by XVilka
Еще очень полезный модуль есть - lpreg (содержит также модуль re), для работы с паттернами и подобием регулярных выражений, написан на си, можно включить в сборку для колибри

Re: Порт LUA (5.2.0)

Posted: Thu Dec 13, 2012 7:42 pm
by SoUrcerer
Вроде я уже выкладывал - не нашел. В архиве исходники и скрипт для сборки compile.sh.