1

O que é o Slang

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.

CategoriaPadrã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)\bif, fn, int, return
Números\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b42, 3.14, 1e10
Operadores->&#124;[-+]{1,2}&#124;!&#124;<=?&#124;>=?&#124;={1,3}&#124;&{1,2}&#124;&#124;{1,2}&#124;\?&#124;\*&#124;/&#124;%&#124;\^&#124;~+, ==, ->, &&, 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çãoSimbólicaTextual
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")
    }
}