Ir para conteúdo

Posts Recomendados

Bem estava pensando em desenvolver uma sub - linguagem ela não chega a ser uma linguagem(OBVIO) porque mesmo que use o comandos dela você estará executando em Lua.

No final de tudo você esta programando em Lua :p.

 

Ela e mais primitiva e então eu fiz uma demozinha e vou disponibilizar o andamento dela.

Por enquanto ela tem 3 estruturas básicas função,um looopzinho e uma verificação.

 

 

str = "\n--function print ['oi hear'['ola'['verdade'\n--function print ['oi'\n--loopCT [4 [{--function print ['year'}\n--gets [7 > 6 [{--function print ['oi'}\n"

function string.explode(e, sep)
       local result = {}       e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
       return result
end

function maior(x, y)
if x == y then
return ""
end
return ","
end

function interpreteFunctionInCt(str)
for i in str:gmatch("--function (.*)") do
local t = string.explode(i, "[")
str = ""
for x=2, #t do
str = str..""..t[x]..""..maior(x, #t)..""
end
local str = t[1].."("..str..")"
loadstring(str) ()
end
end


function ifCT(str)
for i in str:gmatch("--gets (.*)") do
local t = string.explode(i, "[")
y = loadstring('return (' .. t[1].. ')')()
if y then
local y = string.match(i, "{(.-)}")
print(y)
interpreteFunctionInCt(y)
end
end
end

function loopCT(str)
for i in str:gmatch("--loopCT (.*)") do
local t = string.explode(i, "[")
print(t[1])
for x =1, tonumber(t[1]) do
local y = string.match(i, "{(.-)}")
interpreteFunctionInCt(y)
end
end
end


function detectCTtype(str)
for i in str:gmatch("--(.-)\n") do
if string.sub(i, 1, 6) == "--func" then
interpreteFunctionInCt(i)
end
if string.sub(i, 1, 6) == "--loop" then
loopCT(i)
end
if string.sub(i, 1, 6) == "--gets" then
ifCT(i)
end
end
return true
end


detectCTtype(str)

 

As únicas regras que existem na syntax.

Saltar Linhas

Cada estrutura em uma linha

E sempre obedecer o "--"

 

Veja como ficaria:

 

--function print ['oi hear'['ola'['verdade' ---- Printa
--function print ['oi'\n --- Printa
--loopCT [4 [{--function print ['year'} ---Faz um loop e printa 4 vezes a função
--gets [7 > 6 [{--function print ['oi'}" ----Verifica 1 argumento se for true executa a função se for false não executa a função

 

Obs:

Para que usar CT?

Quem sabe para pequenos scripts ou configs.

Ou mesmo para aprendizagem afinal ela super fácil de manipular.

Editado por caotic
Link para o comentário
Compartilhar em outros sites

caramba mano tas aprendendo tudo isso solo? kkk' ta humilhando os meros mortais aki kkk'

bem doidin isso ae heim... mas parece interessante... falta doq fazer faz coisa n?

Link para o comentário
Compartilhar em outros sites

Legal, poderia ter usado pcall e loadstring :S.

E talvez um verificador de syntax tal como assert seria uma boa.

Mais e melhor criar uma próprio verificador e rodar no código do CT antes dele executar.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...