Especificação da Linguagem Verbo
Versão 2.0 — Em Desenvolvimento — Autor: Juan / Projeto Crom
# Visão Geral
Verbo é uma linguagem de programação transpilada que utiliza a gramática da norma culta do Português Brasileiro como sintaxe. Transpilada para Go, garante performance nativa.
🤝 O que é uma linguagem de programação? É um idioma que você usa para "conversar"
com o computador. Em vez de usar inglês como a maioria das linguagens, o Verbo usa português
brasileiro! Transpilar significa traduzir o código de um idioma para outro — no
caso, de Verbo para Go (outra linguagem muito rápida).
Princípios de Design
- ✦ Legibilidade máxima — Código deve parecer prosa técnica
- ✦ Gramática como semântica — Artigos, verbos e preposições têm significado
- ✦ Tipagem forte inferida — O sistema de tipos é inferido pela gramática
- ✦ Sem ambiguidade — Ordem SVO (Sujeito-Verbo-Objeto) estrita
# Tipos de Dados
🤝 O que são tipos de dados? Imagine que cada dado que você guarda no computador
tem uma "etiqueta". Um número inteiro (1, 2, 3) é diferente de um texto ("Olá"). Os tipos ajudam o
computador a saber como tratar cada informação. Texto = palavras e frases.
Inteiro = números sem vírgula. Decimal = números com vírgula.
Lógico = Verdadeiro ou Falso (sim/não). Lista = uma coleção de
coisas.
| Tipo | Descrição | Exemplo |
|---|---|---|
| Texto | Cadeia de caracteres | "Olá" |
| Inteiro | Número inteiro | 42 |
| Decimal | Ponto flutuante | 3.14 |
| Lógico | Verdadeiro/Falso | Verdadeiro |
| Lista | Coleção ordenada | [1, 2, 3] |
| Nulo | Ausência de valor | Nulo |
# Variáveis e Constantes
🤝 O que é uma variável? Pense numa caixa etiquetada onde você guarda um valor. O
nome da caixa é o nome da variável, e dentro dela está o valor. Em Verbo, usamos artigos do
português: "O"/"A" criam caixas que nunca mudam (constantes), e
"Um"/"Uma" criam caixas que podem mudar (variáveis). "é"
define algo permanente (como "A água é molhada") e "está" algo temporário (como "O
tempo está chuvoso").
Constantes (Artigo Definido)
O limite é 100. A mensagem é "Olá, Mundo!".
Variáveis (Artigo Indefinido)
Um contador está 0. Uma taxa está 0.15.
Semântica de Estado
- •
é→ Atribuição estática (natureza) — imutável - •
está→ Atribuição de estado (temporário) — mutável
# Funções
🤝 O que é uma função? É como uma receita de bolo. Você dá um nome para ela
("Calcular"), define os ingredientes ("valor: Inteiro") e descreve o passo a passo. Depois, pode
"chamar" essa receita quantas vezes quiser com ingredientes diferentes. A palavra
"Para" inicia a receita, "usando" define os ingredientes, e
"Retorne" devolve o resultado final.
Para Calcular usando (valor: Inteiro): Retorne valor + 10. O resultado é Calcular com (5). Exibir com (resultado).
# Controle de Fluxo
🤝 O que é controle de fluxo? É como uma placa de trânsito no código.
"Se" é uma pergunta: "Se isso for verdade, faça isso. Senão, faça
aquilo." Exemplo do dia a dia: "Se estiver chovendo, leve guarda-chuva. Senão, leve óculos de sol."
O computador segue a mesma lógica!
Se a idade for menor que 18, então: Exibir com ("Menor de idade"). Senão: Exibir com ("Maior de idade").
# Loops
🤝 O que é um loop? É quando você quer repetir algo várias vezes sem ter que
escrever a mesma coisa toda hora. "Repita 10 vezes" = faz algo 10 vezes.
"Enquanto" = continua fazendo enquanto uma condição for verdadeira (como "enquanto
tiver fome, coma"). "Para cada" = faz algo para cada item de uma lista.
Repita 5 vezes: Exibir com ("Repetindo!").
# Operadores
🤝 O que são operadores? São os símbolos de matemática que você já conhece!
+ soma, - subtrai, * multiplica,
/ divide. Simples assim. Para juntar dois textos, usamos "e" —
como na frase "João e Maria".
Aritméticos
+ Adição
- Subtração
* Multiplicação
/ Divisão
Comparação em Português
menor que → <
maior que → >
igual → ==
# Entidades v2.0
🤝 O que é uma Entidade? Imagine uma ficha cadastral. Uma Entidade
"Pessoa" é um modelo de ficha com campos como "Nome" e "Idade". Quando você cria "um
novo Pessoa", está preenchendo uma ficha real com dados. É como a diferença entre o formulário
em branco (a Entidade) e o formulário preenchido (a instância).
A Entidade Pessoa contendo (Nome: Texto, Idade: Inteiro). Um cliente é Pessoa com ("Ada", 36). Exibir com (cliente).
# Listas v2.0
🤝 O que é uma Lista? É como uma fila de supermercado. Cada pessoa (ou item) tem
uma posição. A posição começa em 0 (sim, programadores contam a partir do zero!).
[10, 20, 30] é uma lista com 3 números. O primeiro item é lista[0] = 10.
Uma precos é [10, 20, 30]. O primeiro é precos[0]. Exibir com (primeiro).
# Concorrência v2.0
🤝 O que é Concorrência? Imagine que você tem 3 tarefas: lavar roupa, cozinhar e
limpar a casa. Normalmente faria uma de cada vez. Com concorrência, você inicia as três ao mesmo
tempo! "Simultaneamente" faz exatamente isso — cada instrução dentro roda em
paralelo, como ter 3 funcionários trabalhando ao mesmo tempo.
Simultaneamente: Exibir com ("Tarefa 1"). Exibir com ("Tarefa 2").
# Tratamento de Erros v2.0
🤝 O que é tratamento de erros? Imagine que você está tentando abrir uma porta. Se
ela estiver trancada, você não quer que seu programa "quebre" — você quer lidar com a situação.
"Tente" = "tente fazer isso". "Capture" = "se der errado, faça
isso em vez". "Sinalize" = "avise que algo deu errado!". É como ter um plano B.
Tente: Sinalize com ("Saldo insuficiente!"). Capture erro: Exibir com (erro).
# BibVerbo (Biblioteca Padrão)
🤝 O que é uma biblioteca? São "poderes extras" prontos para usar. Em vez de
inventar tudo do zero, você inclui uma biblioteca e ganha acesso a funções que
alguém já criou. Matematica = funções de cálculo. Texto =
manipulação de palavras. Html = criar páginas web!
Matematica
- Absoluto(x)
- Teto(x)
- Piso(x)
- Maximo(a,b)
- Raiz(x)
Texto
- Maiusculas(t)
- Minusculas(t)
- Contem(t,s)
- Tamanho(t)
Html
- CriarElemento(t,c)
- CriarPagina(t,c)
- CriarLink(u,t)
- CriarLista(i...)
# Palavras Reservadas
| Palavra | Função |
|---|---|
| O/A | Artigo definido (constante) |
| Um/Uma | Artigo indefinido (variável) |
| é | Atribuição permanente |
| está | Atribuição temporária |
| Para | Declaração de função |
| Se / Senão | Condicional |
| Repita / Enquanto | Loops |
| Simultaneamente | Concorrência |
| Tente / Capture | Tratamento de erros |
| Exibir | Saída padrão |
| Retorne | Retorno de função |
| Incluir | Importar pacote |
# Arquitetura do Compilador
🤝 Como o Verbo funciona por dentro? Seu código passa por 4 etapas: (1) O
Lexer lê seu texto e separa em "palavras" (tokens). (2) O Parser
organiza essas palavras numa árvore lógica (AST). (3) O Transpiler converte essa
árvore em código Go. (4) O Go compila num binário super rápido. É como traduzir um
livro: primeiro você entende as palavras, depois as frases, depois reescreve em outro idioma!
.vrb
→
Lexer
→
Parser
→
AST
→
Transpiler
→
.go
→
Binário
Lexer pkg/lexer/
Scanner UTF-8, tokenização de keywords, literais, operadores.
Parser pkg/parser/
Recursive Descent com precedência de expressões.
AST pkg/ast/
Nós tipados: Programa, Variáveis, Funções, Se, Repita…
Transpiler pkg/transpiler/
Visitor pattern para gerar código Go compilável.