NovaLang0.2 alpha

Controle de fluxo e funções

fn classify(score: int) -> string {
    if score >= 90 {
        return "A";
    } else if score >= 70 {
        return "B";
    } else {
        return "C";
    }
}

Parâmetros são posicionais e o retorno usa ->. A análise valida escopo, aridade, operandos e retornos. Recursão existe, mas não há limite configurável: uma recursão profunda pode causar stack overflow.

Laços

let mut n = 3;
while n > 0 {
    print(n);
    n = n - 1;
}

loop {
    break;
}

continue avança para a próxima iteração. for, ranges e match são experimentais e diferem entre VM e interpretador. Ranges podem materializar todos os valores e consumir memória proporcional ao tamanho.

for item in [10, 20, 30] {
    print(item);
}

Valide código experimental nos dois backends:

nova run main.nova --backend vm
nova run main.nova --backend interp

switch, try/catch/throw, defer e yield são apenas front-end e recebem A0001; não são mecanismos utilizáveis nesta alpha.