Guia da Linguagem Slang1.1
Slang é uma linguagem de programação didática projetada para o ensino de compiladores. Ela possui uma sintaxe familiar, combinando elementos de C, Python e Rust, com suporte a tipos estáticos, funções e estruturas de controle fundamentais.
Estrutura Léxica (Tokens)1.1.1
A tabela abaixo descreve os tokens da linguagem e as expressões regulares (Regex) utilizadas para sua identificação no Prism.js.
| Categoria | Padrão (Regex) | Exemplos |
|---|---|---|
| Comentário de Linha | //.* | // Isto é um comentário |
| Comentário de Bloco | /\*[\s\S]*?\*/ | /* Bloco multilinhas */ |
| String Literal | (["'])(?:\\.|(?!\1)[^\\\r\n])*\1 | "Olá Mundo", 'c' |
| Palavras-Chave | \b(?:if|else|loop|while|for|fn|return|true|false|int|bool|float|char|string|void|and|or|not)\b | if, fn, int, return |
| Números | \b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b | 42, 3.14, 1e10 |
| Operadores | ->|[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}||{1,2}|\?|\*|/|%|\^|~ | +, ==, ->, &&, and |
| Pontuação | [{}[\];(),.:] | (, ), {, :, ; |
Tipos de Dados1.1.2
Slang suporta os seguintes tipos básicos:
int: Números inteiros.float: Números de ponto flutuante.bool: Valores booleanos (true,false).char: Caractere único.string: Cadeia de caracteres.void: Curinga para ausência de valor (usado em retornos de função).
Variáveis e Declaração1.1.3
As variáveis são declaradas com a sintaxe nome: tipo = valor.
x: int = 10
pi: float = 3.1415
nome: string = "Slang"
ativo: bool = true
Estruturas de Controle1.1.4
Condicionais (if / else)1.1.4.1
if x > 5 {
print("Maior que 5")
} else {
print("Menor ou igual a 5")
}
Laços de Repetição (loop)1.1.4.2
loop condicao {
if x == 0 {
return
}
x = x - 1
}
Funções1.1.5
As funções são definidas usando a palavra-chave fn, seguida pelo nome, parâmetros e o tipo de retorno indicado por ->.
fn somar(a: int, b: int) -> int {
return a + b
}
fn principal(args: void) -> void {
resultado: int = somar(5, 3)
print(resultado)
}
Operadores Lógicos1.1.6
Slang permite tanto a notação simbólica quanto a textual para operações lógicas:
| Operação | Simbólica | Textual |
|---|---|---|
| E (AND) | && | and |
| OU (OR) | || | or |
| NÃO (NOT) | ! | not |
Exemplo de Uso:1.1.6.1
if (ativo and x > 0) || !validado {
// Código aqui
}
Exemplo Completo1.1.7
Abaixo, um exemplo que demonstra a maioria dos recursos da linguagem:
/*
Cálculo de Fatorial em Slang
*/
fn fatorial(n: int) -> int {
if n <= 1 {
return 1
}
return n * fatorial(n - 1)
}
fn main(args: void) -> void {
x: int = 5
resultado: string = "O fatorial é: "
if x >= 0 and x < 13 {
print(resultado)
print(fatorial(x))
} else {
print("Erro: Entrada inválida")
}
}