Автор Тема: Lua  (Прочитано 113631 раз)

DddIzer

  • Гость
Re: Lua
« Ответ #330 : Февраль 24, 2013, 01:39:04 pm »
Разумно. Не знаю как в Юниксах, но в Окнах драйверы писать — это какой-то БДСМ.
а вот х.з. - Луа оперирует с более высокоуровневыми моделями памяти, данных и операций, абстрагируясь от железа... обеспечить одинаковую эффективность (в смысле производительности кода) будет сложно.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #331 : Февраль 24, 2013, 02:30:14 pm »
Разумно. Не знаю как в Юниксах, но в Окнах драйверы писать — это какой-то БДСМ.
В юниксах, в общем и в целом, везде по разному :-) Но вообще, обычно, там все проще чем в виндах.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #332 : Март 01, 2013, 11:49:48 am »
Довольно любопытная геймдев-студия: http://habrahabr.ru/post/148311/

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #333 : Март 03, 2013, 07:33:16 pm »
Всякие бинды через LuaJit ffi:
https://code.google.com/p/lua-files/

Заюзал zlib тамошний. Понравилось. Остальное пока не смотрел.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #334 : Март 06, 2013, 11:07:26 am »
Тернарный оператор в Lua:  :D
a = 2
b = 1
print(a > b and 'a > b' or 'a <= b')

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #335 : Март 17, 2013, 06:11:56 pm »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #336 : Март 25, 2013, 08:22:18 pm »
What is Lua OS?  :D
http://luaos.net/about.php

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #337 : Март 26, 2013, 06:00:51 pm »
Недавно вышла новая версия SciTE-ru: https://code.google.com/p/scite-ru/

Редактор на полную катушку использует Lua.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #338 : Апрель 03, 2013, 11:13:34 am »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #339 : Апрель 23, 2013, 07:27:18 am »
Питонобразный сахарок для Lua: http://moonscript.org/

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #340 : Май 22, 2013, 10:52:08 am »
Запилил лексер языка 1С для редактора Scite:
Код: (lexer1с8.lua) [Выделить]
function new_set(list)
    local set = {}
    for _, v in ipairs(list) do set[v] = true end
    return set
end

function GetStyler()
    os.setlocale('Russian_Russia.1251')
    local isident = new_set {
        'если','if','тогда','then','иначеесли','elsif','иначе','else',
        'конецесли','endif','для','for','каждого','each','из','in','по',
        'to','пока','while','цикл',    'do','конеццикла','enddo','процедура',
        'procedure','функция','function','конецпроцедуры','endprocedure',
        'конецфункции','endfunction','перем','var','перейти','goto','возврат',
        'return','продолжить','continue','прервать','break','и','and','или','or','не',
        'not','попытка','try','исключение','except','вызватьисключение','raise',
        'конецпопытки','endtry','новый','new','выполнить','execute'
    }
   
    local isoperator = new_set {'+', '-', '=', '/', '*', '%', '<', '>', ')', '(', ',', ';', '.', ']', '[', '?'}
    local isnumber = new_set {'0','1','2','3','4','5','6','7','8','9','.'}
   
    local S_DEFAULT = 0
    local S_IDENTIFIER = 1       
    local S_KEYWORD = 2
    local S_COMMENT = 3
    local S_STRING = 4
    local S_OPERATOR = 5
    local S_NUMBER = 6
    local S_METOD = 7
    local S_DATA = 8
    local S_PREPROCESSOR = 9
   
    return function (styler)
       
        if styler.language == "script_1c8" then
            styler:StartStyling(styler.startPos, styler.lengthDoc, styler.initStyle)
            local state, ch
            while styler:More() do
               
                state = styler:State()
                ch = styler:Current()
               
                -- Exit state if needed
                if state == S_IDENTIFIER then
                    if not ch:match('[%a%w_]') then
                        identifier = styler:Token()
                        if isident[identifier:lower()] then
                            styler:ChangeState(S_KEYWORD)
                        end
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_METOD then
                    if not ch:match('[%a%w_]') then
                        identifier = styler:Token()
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_COMMENT then
                    if styler:Match("\n") then
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_STRING then
                    if ch == '"' then
                        styler:ForwardSetState(S_DEFAULT)
                    end
                elseif state == S_OPERATOR then
                    if not isoperator[ch] then
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_NUMBER then
                    if not isnumber[ch] then
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_DATA then
                    if ch == "'" then
                        styler:ForwardSetState(S_DEFAULT)
                    end
                elseif state == S_PREPROCESSOR then
                    if styler:Match("\n") then
                        styler:SetState(S_DEFAULT)
                    end
                end

                -- Enter state if needed
                if styler:State() == S_DEFAULT then
                    ch = styler:Current()
                    if styler:Match("//") then
                        styler:SetState(S_COMMENT)
                    elseif ch:match('[%a_]') then
                        styler:SetState(S_IDENTIFIER)
                    elseif ch == '"' then
                        styler:SetState(S_STRING)
                    elseif state == S_IDENTIFIER and ch == '.' and styler:Next():match('[%a_]') then
                        styler:SetState(S_OPERATOR)
                        styler:ForwardSetState(S_METOD)
                    elseif isoperator[ch] then
                        styler:SetState(S_OPERATOR)
                    elseif isnumber[ch] then
                        styler:SetState(S_NUMBER)
                    elseif ch == "'" then
                        styler:SetState(S_DATA)
                    elseif ch == '&' then
                        styler:SetState(S_PREPROCESSOR)
                    end
                end

                styler:Forward()
            end
            styler:EndStyling()
        end
    end
end

AddEventHandler("OnStyle", GetStyler())

Цитата: 1c8.properties
lexer.*.1c8=script_1c8
style.script_1c8.0=fore:#505050,font:Courier New,size:10
style.script_1c8.1=fore:#000080,font:Courier New,size:10
style.script_1c8.2=fore:#FF0000,font:Courier New,size:10
style.script_1c8.3=fore:#008000,font:Courier New,size:10
style.script_1c8.4=fore:#000000,font:Courier New,size:10
style.script_1c8.5=fore:#FF0000,font:Courier New,size:10
style.script_1c8.6=fore:#309080,font:Courier New,size:10
style.script_1c8.7=fore:#000080,font:Courier New,size:10
style.script_1c8.8=fore:#F08050,font:Courier New,size:10
style.script_1c8.9=fore:#805000,font:Courier New,size:10

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #341 : Август 04, 2013, 08:52:15 pm »
Если кто-то еще не видел: Lua за 15 минут

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #342 : Ноябрь 23, 2013, 10:36:00 am »
Клиентский хук для TortoiseSVN

С момента публикации этот хук трудится в нашем корпоративном SVN
Около 1000 коммитов. Ни одного сбоя.
На этой неделе был пойман первый ассерт.
Оказалось что платформа не хранит тело формы если на ней нет ни одного элемента.
Случай очень редкий.
Почему коммит невозможен я увидел прямо в окне SVN, т.к. Lua показывает строку со сработавшим ассертом. Благодаря этому проблема была понята и устранена в течении 5 минут.

2 valexey: динамическая типизация, без отладчика....  ;)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #343 : Ноябрь 23, 2013, 10:42:26 am »
Клиентский хук для TortoiseSVN

С момента публикации этот хук трудится в нашем корпоративном SVN
Около 1000 коммитов. Ни одного сбоя.
На этой неделе был пойман первый ассерт.
Оказалось что платформа не хранит тело формы если на ней нет ни одного элемента.
Случай очень редкий.
Почему коммит невозможен я увидел прямо в окне SVN, т.к. Lua показывает строку со сработавшим ассертом. Благодаря этому проблема была понята и устранена в течении 5 минут.

2 valexey: динамическая типизация, без отладчика....  ;)
Наоборот - Lua тут изначально была запущена под отладчиком. Вообще многие реализации динамически типизированных языков (если не все) работают только под отладчиком, работа без отладчика там не предусмотрена :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #344 : Ноябрь 23, 2013, 10:46:35 am »
Ну под отладчиком я имел в виду точки останова, пошаговое выполнение, стек вызовов и т.д.
Для луа вообще есть отладчик в базовой поставке, но я писал в ST2 и как там прикрутить его просто не знаю.