Lua имеет очень приятный не скобка синтаксис вызова, который в сочетании с функцией замыкания позволяют мне написать следующуюLua Затворы в реализации DSL
local tag = 1
function test(obj)
return
function(str)
return
function (tbl)
tbl.objtag = tag
tbl.objname = str
return tbl
end
end
end
test (tag) "def"
{
}
test tag "def" --error
{
}
Однако, если удалить скобки вокруг (тег), его приводит к ошибке компиляции. Итак, почему Lua разрешает параметры без круглых скобок (т. Е. «Def»), а не параметры «нет в скобках» var (таблица в этом случае)?
Благодарим вас за это объяснение. Я был так близок к полноценному DSL ... – jameszhao00
Есть ли причина, по которой вы не могли запустить вход в DSL через какой-то «препроцессор», чтобы поместить круглые скобки вокруг всего? –
Я нашел metalua. Он делает то, что вы описываете. – jameszhao00