Documentação Jech
Bem-vindo à documentação oficial da linguagem de programação Jech! Esta linguagem foi criada com propósito educacional para demonstrar como interpretadores e compiladores funcionam.
Instalação
Existem duas formas de usar Jech:
1. Playground Online
A forma mais rápida de começar é usar o playground online. Não requer instalação e roda diretamente no navegador via WebAssembly.
2. Instalação Local
Para instalar o interpretador Jech localmente:
# Clone o repositório
git clone https://github.com/joaoluke/jech.git
cd jech
# Compile o interpretador
make
# Execute um arquivo .jc
./build/jech exemplo.jc
# Ou use o REPL interativo
./build/jech
Sintaxe Básica
Jech possui uma sintaxe simples e intuitiva, inspirada em linguagens modernas mas com palavras-chave únicas para fins educacionais.
Variáveis
Use a palavra-chave keep para declarar variáveis.
Jech possui tipagem dinâmica, então você não precisa especificar o tipo.
keep x = 10;
keep name = "João";
keep active = 1;
Tipos de Dados
Jech suporta três tipos principais de dados:
Números
keep age = 25;
keep price = 19.99;
keep negative = -10;
Strings
keep greeting = "Olá, Mundo!";
keep name = "Jech";
Arrays
keep numbers = [1, 2, 3, 4, 5];
keep names = ["Ana", "Bruno", "Carlos"];
Operadores
Operadores Aritméticos
keep sum = 10 + 5; // 15
keep diff = 10 - 5; // 5
keep product = 10 * 5; // 50
keep quotient = 10 / 5; // 2
Operadores de Comparação
x == y // Igual
x != y // Diferente
x > y // Maior que
x < y // Menor que
x >= y // Maior ou igual
x <= y // Menor ou igual
Concatenação de Strings
keep fullName = "João" + " " + "Silva";
say(fullName); // João Silva
Condicionais
Use when para estruturas condicionais:
If-Else Básico
keep age = 20;
when (age >= 18) {
say("Você é maior de idade");
}
else {
say("Você é menor de idade");
}
Múltiplas Condições
keep score = 85;
when (score >= 90) {
say("Excelente!");
}
else when (score >= 70) {
say("Bom!");
}
else {
say("Precisa melhorar");
}
Arrays
Arrays em Jech são indexados a partir de 0:
Criação e Acesso
keep fruits = ["maçã", "banana", "laranja"];
say(fruits[0]); // maçã
say(fruits[1]); // banana
say(fruits[2]); // laranja
Modificação
keep numbers = [1, 2, 3];
numbers[0] = 10;
say(numbers[0]); // 10
Funções
Use task para definir funções:
Função Simples
task greet() {
say("Olá, Mundo!");
}
greet();
Função com Parâmetros
task greet(name) {
say("Olá, " + name);
}
greet("João"); // Olá, João
Função com Múltiplos Parâmetros
task add(a, b) {
keep result = a + b;
say(result);
}
add(5, 3); // 8
Exemplos Práticos
Calculadora Simples
keep a = 10;
keep b = 5;
say("Soma: " + (a + b));
say("Subtração: " + (a - b));
say("Multiplicação: " + (a * b));
say("Divisão: " + (a / b));
Verificador de Idade
task checkAge(age) {
when (age >= 18) {
say("Maior de idade");
}
else {
say("Menor de idade");
}
}
checkAge(20);
checkAge(15);
Iteração em Array
keep numbers = [1, 2, 3, 4, 5];
keep i = 0;
when (i < 5) {
say(numbers[i]);
keep i = i + 1;
}
Função de Saudação Personalizada
task personalGreeting(name, age) {
say("Olá, " + name + "!");
when (age >= 18) {
say("Você tem " + age + " anos e é maior de idade.");
}
else {
say("Você tem " + age + " anos e é menor de idade.");
}
}
personalGreeting("Ana", 25);
personalGreeting("Pedro", 16);