Mi piace molto Lua come linguaggio di programmazione MA, mi dà fastidio credere di dover digitare costantemente "local
" per tutte le mie variabili locali.Il mio DSL per Lua funzionerebbe ...? (questo sembra troppo semplicemente per essere vero)
Rende solo il mio codice più ingombrante.
Quindi mi chiedo, posso creare un Domain Specific Language (DSL) su Lua per avere semplicemente la seguente convenzione di denominazione delle variabili.
- Se un nome di variabile è in lettere maiuscole, quindi è una variabile globale
- Altrimenti, la variabile è una
local
variabile
Domanda: Sarebbe questo lavoro - Sì o no?
In altre parole:
-- 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 = ...
Così ora, il seguente codice nel predefinito Lua:
myglobal = 10
local a = 1
if a > 1 then
local b = 2
print b
else
local c = 3
print c + myglobal
end
Con il mio DSL Lua:
MYGLOBAL = 10
a = 1
if a > 1 then
b = 2
print b
else
c = 3
print c + MYGLOBAL
end
UPDATE:
E le funzioni locali?
Come funziona il seguente codice?
myfunc = function (...) -- local myfunc = function (...)
Non sono sicuro di voler eseguire tutte le funzioni globali in maiuscolo.
Forse ho appena ignorato le funzioni e richiede l'identificatore 'local
' ... pensieri?
Interessante domanda. +1 Mi interessa vedere se questo è corretto o quale sarebbe il modo corretto di farlo. –
Certo che "puoi" fare questo; scrivi un preprocessore che legge il tuo DSL e genera il sorgente Lua. Questo non è un compito banale, né è ovvio per me quanto valga la pena. Personalmente vedo poco in DSL che funzionano allo stesso livello di astrazione del linguaggio di implementazione; non risparmiano tempo né evitano errori. Il "dominio" in una lingua "specifica per dominio" di solito si riferisce al dominio dell'utente finale; tale giocatore del gioco, ragioniere, uomo d'affari e altri. –
Quindi, dopo un anno, cosa è venuto fuori da questa idea? – lhf