ciaaccscript
v2.3.0
Published
CIAACCScript 2.3: linguagem comica, simples, visual, com IA, lint, autocomplete e formatter.
Maintainers
Readme
CIAACCScript 2.0
CIAACCScript 2.0 e uma linguagem interpretada em Node.js, inspirada por C e JavaScript, mas com uma identidade propria: palavras-chave comicas, foco em IA e agora suporte funcional a orientacao a objetos.
O arquivo padrao usa extensao .ciaacc.
Instalar
Via npm:
npm.cmd install -g ciaaccscript@latest
ciaacc install-vscodeDepois feche e abra o VS Code. Arquivos .ciaacc devem ganhar highlight, icone e botao de play.
Sem npm, dentro da pasta do projeto:
.\ciaacc.cmd .\examples\ciaacc-2-demo.ciaaccComandos uteis
ciaacc arquivo.ciaacc # executa um arquivo
ciaacc lint arquivo.ciaacc # checa sintaxe e estilo
ciaacc format arquivo.ciaacc # formata o arquivo no lugar
ciaacc --repl # modo interativo
ciaacc --help # ajuda
ciaacc --docs # mostra onde esta este README
ciaacc --readme # imprime este README
ciaacc --open-docs # abre este README
ciaacc install-vscode # instala a extensao local no VS Code
ciaacc uninstall-vscode # remove a extensao local do VS CodeLint, autocomplete e formatter
A extensao do VS Code inclui:
- lint no painel
Problems; - autocomplete de palavras-chave, tipos, funcoes nativas e bibliotecas;
- snippets para
paeTaComo,paezao,hermesFaca,nuQuidito,vmCaiuejanela.jogoDaVelha; - formatter via
Format Document.
Atalhos uteis no VS Code:
Ctrl+Space autocomplete
Shift+Alt+F formatar documento
Ctrl+Shift+P > Format DocumentPela CLI:
ciaacc lint .\arquivo.ciaacc
ciaacc format .\arquivo.ciaaccO lint acusa erros de sintaxe e tambem da dicas quando encontra palavras antigas como receita, fixo e rabiscar.
O formatter e inspirado no Prettier: ele ajusta indentacao e alguns espacos basicos, mas nao e o Prettier oficial.
As formas antigas tambem funcionam:
ciaacc --install-vscode
ciaacc --uninstall-vscodeVisual 2.0
Estas sao as declaracoes principais da linguagem:
| CIAACCScript 2.0 | Significado |
| --- | --- |
| cs | variavel mutavel, como let |
| cs2 | constante, como const |
| paeTaComo | declara funcao |
| felizao | retorna valor de funcao |
| paezao | declara classe |
| hermesFaca | if |
| claudeFaca | else |
| aiDentro | while |
| nuQuidito | for each |
| aiFora | break |
| vmCaiu | try |
| arrumaAi | catch |
| victorTostes | imprime no terminal |
| ehprompt | converte para texto |
| caioTomate | converte para numero |
| token | true |
| lol | false |
| casalabs | null |
A sintaxe antiga (mutavel, fixo, receita, devolve, se, senao, para, enquanto, print, rabiscar) continua funcionando por compatibilidade, mas a cara oficial da 2.0 e a tabela acima.
Ola mundo
cs2 nome: texto = "CIAACCScript 2.0";
victorTostes("Ola, " + nome);Variaveis e tipos
cs idade: inteiro = 19;
cs2 pi: decimal = 3.14;
cs2 ativo: logico = token;
cs2 desligado: logico = lol;
cs2 nada: vazio = casalabs;
cs2 frase: texto = "modo 2.0 ativado";Tipos disponiveis:
inteirodecimalnumerotextologicovaziolistamapafuncaoclassequalquer
Funcoes
paeTaComo soma(a: inteiro, b: inteiro) -> inteiro {
felizao a + b;
}
victorTostes(soma(2, 3));Sem felizao, a funcao retorna casalabs.
Classes
Classes usam paezao. O metodo especial nascer funciona como construtor. Dentro dos metodos, use this para acessar o objeto.
paezao Pessoa {
paeTaComo nascer(nome: texto) {
this.nome = nome;
this.pontos = 0;
}
paeTaComo ganhar() {
this.pontos += 1;
}
paeTaComo apresentar() -> texto {
felizao this.nome + " tem " + ehprompt(this.pontos) + " pontos";
}
}
cs2 p: mapa = Pessoa("Brunno");
p.ganhar();
victorTostes(p.apresentar());Objetos de classe sao mapas com metodos anexados, por isso o tipo recomendado para instancia e mapa.
Controle de fluxo
If/else
hermesFaca (idade >= 18) {
victorTostes("passou");
} claudeFaca {
victorTostes("volta depois");
}While
cs i: inteiro = 0;
aiDentro (i < 3) {
victorTostes(i);
i += 1;
}For each e break
nuQuidito (nome em ["Brunno", "Samuel", "Willian", "Gabriel"]) {
hermesFaca (nome == "Willian") {
aiFora;
}
victorTostes(nome);
}Try/catch
vmCaiu {
panico "deu ruim, mas com estilo";
} arrumaAi (erro) {
victorTostes("erro capturado:", erro);
}Estruturas de dados
Lista:
cs2 valores: lista = [10, 20, 30];
victorTostes(valores[0]);Mapa:
cs robo: mapa = {
nome: "MiniModelo",
cafe: token,
score: 0.91
};
robo.score += 0.05;
victorTostes(robo.nome, robo.score);Operadores
+ - * / %
== != < <= > >=
e ou nao !
= += -= *= /=Biblioteca padrao
| Funcao | Uso |
| --- | --- |
| victorTostes(...) | imprime no terminal |
| tamanho(valor) | tamanho de texto, lista ou mapa |
| tipo(valor) | retorna o tipo CIAACC |
| ehprompt(valor) | converte para texto |
| caioTomate(valor) | converte para numero |
| agora() | timestamp em milissegundos |
Aliases antigos:
print(...)rabiscar(...)texto(...)numero(...)
Biblioteca de IA
A variavel global ai continua sendo o centro de IA da linguagem.
cs2 tokens: lista = ai.tokenizar("IA rapida e comica");
cs2 probs: lista = ai.softmax([2, 1, 0.2]);
cs2 classe: inteiro = ai.decidir(probs);
cs2 sim: decimal = ai.similaridade([1, 0, 1], [1, 1, 0]);
victorTostes(tokens);
victorTostes(probs);
victorTostes(classe);
victorTostes(sim);Funcoes:
ai.tokenizar(texto)ai.sigmoid(numero)ai.softmax(lista)ai.similaridade(lista, lista)ai.decidir(listaOuMapa)
Biblioteca visual janela
CIAACCScript tambem tem uma biblioteca visual simples. Ela gera uma pagina HTML temporaria e abre no navegador padrao, funcionando como uma janela clicavel sem instalar dependencias extras.
Jogo da velha
paeTaComo main() {
janela.jogoDaVelha({
titulo: "CIAACC Velha",
jogadorX: "Hermes",
jogadorO: "Claude",
pontosParaVencer: 5
});
}
main();Rodar:
ciaacc .\examples\jogo-da-velha.ciaaccO jogo abre com tabuleiro clicavel, placar e reset automatico quando alguem chega a 5 pontos.
HTML simples
janela.abrirHtml("Minha janela", "<h1>Ola do CIAACC</h1>");Exemplo 2.0
Rode:
ciaacc .\examples\ciaacc-2-demo.ciaaccOu dentro da pasta do projeto:
.\ciaacc.cmd .\examples\ciaacc-2-demo.ciaaccVS Code
Depois de:
ciaacc install-vscodeVoce pode abrir qualquer pasta, criar teste.ciaacc e clicar no play no canto superior direito.
Se o VS Code nao reconhecer:
Ctrl+Shift+P
Developer: Reload WindowSe ainda aparecer Plain Text, clique no canto inferior direito e selecione CIAACCScript.
Publicar nova versao
Atualize a version em package.json, depois:
npm.cmd test
npm.cmd pack --dry-run
npm.cmd publishEstrutura do projeto
CIAACCScript\
bin\ciaacc.js
src\ciaacc.js
examples\
tests\
vscode-extension\
ciaacc.cmd
install-vscode.cmd
install-vscode.ps1
uninstall-vscode.cmd
README.mdLimitacoes atuais
- nao compila para codigo nativo;
- nao tem imports;
- nao tem heranca entre classes;
- nao tem LSP/autocomplete inteligente;
- a biblioteca
aie utilitaria, nao treina modelos reais.
Mesmo assim, CIAACCScript 2.0 ja executa funcoes, classes, objetos, listas, mapas, loops, try/catch, break, tipos simples e ferramentas de IA.
