CA

[BETA] CT LUA

Por caotic, 13 de jun. de 2013 em Mods, funções e outros

linguagem ct
ct
ct beta
ct demo
script
8
1.4k
caoticC
13 de junho de 2013 às 10:50

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 Junho 13 por caotic

SlicerS
13 de junho de 2013 às 11:25

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?

caoticC
13 de junho de 2013 às 11:58

ehauehauehauhe'.

 

Pois é.

Já me chamaram de doido(eventide fdp) porque to desenvolvendo ela.

 

Editado Junho 13 por caotic

SkymagnumS
13 de junho de 2013 às 17:00

Legal, poderia ter usado pcall e loadstring :S.

EventideE
14 de junho de 2013 às 01:22

Muito massa, fui olhar seu script bem quando eu to ralando pra fazer uma manipulação de string aqui, nunca fui bom nisso... =|

caoticC
14 de junho de 2013 às 10:51

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.

Junior001J
14 de junho de 2013 às 10:57

Muitoooooo Bom parabéns mesmo otimo scripter você em :D

EnselfE
18 de junho de 2013 às 21:15

Muito bom