Будет ли работать мой DSL для Lua…? (это кажется слишком простым, чтобы быть правдой)

Я действительно люблюLuaкак язык программирования, НО меня невероятно раздражает необходимость постоянно вводить " local" для всех моих локальных переменных.

Из-за этого мой код выглядит более загроможденным.

Поэтому мне интересно, могу ли я создать предметно-ориентированный язык (DSL)поверх Lua, чтобы просто иметь следующее соглашение об именах переменных.

  1. Если имя переменной написано ВСЕМИ ЗАГЛАВНЫМИ БУКВАМИ, то это глобальная переменная.
  2. В противном случае переменная является localпеременной

Вопрос:Будет ли это работать -Да или нет?

Другими словами:

-- In Lua 5.2
isGlobalinLua  = "is global in default Lua"
GLOBALVAR      = "is global var in default Lua"
local localvar = "is local var in default Lua"

-- In my DSL Lua language
isLocalinDSLLua = "is local in DSL Lua"  -- translates to: local isLocalinDSLLua =...
GLOBALVAR       = "is global DSL Lua"
localvar        = "is local var in DSL Lua"  -- translates to: local localvar =...

Итак, следующий код в Lua по умолчанию:

myglobal = 10
local a = 1
if a > 1 then
    local b = 2
    print b
else
    local c = 3
    print c + myglobal
end

С моим DSL Lua:

MYGLOBAL = 10
a = 1
if a > 1 then
    b = 2
    print b
else
    c = 3
    print c + MYGLOBAL
end

ОБНОВЛЕНИЕ:

Что насчет локальных функций?

Как будет работать следующий код?

myfunc = function (...)   -- local myfunc = function (...)

Я не уверен, что хотел бы, чтобы каждая глобальная функция была написана заглавными буквами.

Может быть, я просто игнорирую функции и требую идентификатор 'local'... мысли?

5
задан nickb 17 March 2012 в 05:17
поделиться