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;
📝 Nota: Todas as declarações devem terminar com ponto e vírgula (;)

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;
}
💡 Dica: Experimente estes exemplos no playground para ver como funcionam!

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);
⚠️ Importante: Jech está em desenvolvimento ativo. Algumas funcionalidades podem mudar em versões futuras.

Pronto para começar?

Teste seus conhecimentos no playground interativo!

Abrir Playground