Me encanta Lua como lenguaje de programación PERO me molesta tener que escribir constantemente "local
" para todas mis variables locales.¿Mi DSL para Lua funcionaría ...? (Esto parece demasiado simple para ser verdad)
Simplemente hace que mi código parezca más desordenado.
Así que me pregunto si puedo crear un lenguaje específico de dominio (DSL) encima de Lua para simplemente tener la siguiente convención de nomenclatura variable.
- Si un nombre de variable es en letras mayúsculas, entonces es una variable global
- lo demás, la variable es una
local
variables
Pregunta: Que este trabajo - ¿Sí o no?
En otras palabras:
-- 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 = ...
por lo que ahora, el siguiente código en su defecto Lua:
myglobal = 10
local a = 1
if a > 1 then
local b = 2
print b
else
local c = 3
print c + myglobal
end
Con mi DSL Lua:
MYGLOBAL = 10
a = 1
if a > 1 then
b = 2
print b
else
c = 3
print c + MYGLOBAL
end
ACTUALIZACIÓN:
¿Qué pasa con las funciones locales?
¿Cómo funcionaría el siguiente código?
myfunc = function (...) -- local myfunc = function (...)
No estoy seguro de que quiera realizar todas las funciones globales en mayúsculas.
Tal vez simplemente ignoro funciones y requiera el identificador 'local
' ... ¿pensamientos?
Interesante pregunta. +1 Estoy interesado en ver si esto es correcto o cuál sería la forma correcta de hacerlo. –
Por supuesto que "puedes" hacer esto; escribe un preprocesador que lea tu DSL y emita la fuente de Lua. Esta no es una tarea trivial, ni es obvio para mí lo que vale la pena. Personalmente, veo poco interés en las DSL que funcionan en el mismo nivel de abstracción que el lenguaje de implementación; no ahorran tiempo ni evitan errores. El "dominio" en un lenguaje "específico del dominio" generalmente se refiere al dominio del usuario final; tal jugador jugador, contador, hombre de negocios, et al. –
Entonces, después de un año, ¿qué salió de esta idea? – lhf