JLScript 3.2.0 • Guia completo

Do primeiro mostrar()
ao código avançado.

Uma aula progressiva da sintaxe do JLScript, começando por valores e variáveis e chegando a módulos, APIs, banco de dados, dispositivos e interfaces.

18módulos da aula
.jlsextensão da linguagem
PT + ENsintaxe bilíngue
Draculatema visual
Módulo 1

Começando: seu primeiro programa

Todo arquivo JLScript usa a extensão .jls. O primeiro objetivo é entender a ideia mais simples da linguagem: executar instruções em ordem.

exemplo.jls JLScript
mostrar("Olá, mundo!")
mostrar("Meu primeiro programa em JLScript")
O que acontece aqui? mostrar() recebe um valor e o envia para a saída do programa. Pense nele como sua ferramenta principal enquanto aprende e testa código.
Módulo 2

Variáveis e valores

Uma variável guarda um valor para ser reutilizado. O JLScript possui as formas va, let e ins. A semântica exata de cada forma deve acompanhar a versão atual da linguagem, mas todas aparecem no parser atual como formas de declaração.

exemplo.jls JLScript
va nome = "Lucas"
let idade = 20
ins ativo = true

mostrar(nome)
mostrar(idade)
mostrar(ativo)

Os valores básicos que você encontrará com frequência são texto, números, booleanos e null.

exemplo.jls JLScript
va linguagem = "JLScript"
va versao = 2
va preco = 19.90
va online = true
va resultado = null
Módulo 3

Operadores e expressões

Expressões combinam valores com operadores. O parser atual trabalha com aritmética, comparações, lógica, unários e incremento/decremento.

exemplo.jls JLScript
va a = 10
va b = 3

mostrar(a + b)
mostrar(a - b)
mostrar(a * b)
mostrar(a / b)
mostrar(a % b)

mostrar(a > b)
mostrar(a == b)
mostrar(a != b)
exemplo.jls JLScript
va idade = 20
va autorizado = true

se (idade >= 18 && autorizado) {{
    mostrar("Acesso permitido")
}}
Dica: aprenda primeiro a montar expressões pequenas. Depois combine condições. É muito mais fácil depurar idade >= 18 do que uma parede de operadores que parece senha de Wi‑Fi.
Módulo 4

Condições: se/senao e if/else

Condições escolhem qual bloco será executado. O JLScript aceita formas em português e inglês. Dentro de uma mesma estrutura, mantenha o idioma consistente.

exemplo.jls JLScript
va idade = 20

se (idade >= 18) {{
    mostrar("Maior de idade")
}} senao {{
    mostrar("Menor de idade")
}}
if_else.jls JLScript
va idade = 20

if (idade >= 18) {{
    mostrar("Adulto")
}} else {{
    mostrar("Menor")
}}

Encadeando condições

exemplo.jls JLScript
va nota = 8

se (nota >= 9) {{
    mostrar("Excelente")
}} senao se (nota >= 7) {{
    mostrar("Aprovado")
}} senao {{
    mostrar("Reprovado")
}}
Módulo 5

Repetição: enquanto/while e para/for

Laços permitem repetir código. Use enquanto/while quando a repetição depende de uma condição. Use para/for quando existe uma progressão clara.

exemplo.jls JLScript
va numero = 1

enquanto (numero <= 5) {{
    mostrar(numero)
    numero++
}}
exemplo.jls JLScript
para (va i = 0; i < 5; i++) {{
    mostrar(i)
}}

Interrompendo ou pulando

exemplo.jls JLScript
para (va i = 0; i < 10; i++) {{
    se (i == 3) {{
        continuar
    }}

    se (i == 8) {{
        pare
    }}

    mostrar(i)
}}
Módulo 6

Funções

Funções agrupam lógica reutilizável. Elas recebem parâmetros e podem devolver um resultado usando retorne.

exemplo.jls JLScript
func soma(a, b) {{
    retorne a + b
}}

va total = soma(10, 5)
mostrar(total)

Parâmetros padrão

exemplo.jls JLScript
func saudacao(nome = "Mundo") {{
    mostrar("Olá " + nome)
}}

saudacao()
saudacao("Lucas")

Argumentos nomeados

O parser aceita argumentos nomeados com = ou :. Isso deixa chamadas longas bem mais fáceis de ler.

exemplo.jls JLScript
func criarUsuario(nome, idade, ativo = true) {{
    mostrar(nome)
    mostrar(idade)
    mostrar(ativo)
}}

criarUsuario(
    nome = "Lucas",
    idade = 20,
    ativo = true
)

Função anônima

exemplo.jls JLScript
va dobro = func(numero) {{
    retorne numero * 2
}}

mostrar(dobro(10))
Módulo 7

Listas e objetos

Listas guardam vários valores em sequência. Objetos agrupam dados por propriedades.

exemplo.jls JLScript
va linguagens = [
    "JLScript",
    "Python",
    "JavaScript"
]

mostrar(linguagens[0])
objetos.jls JLScript
va usuario = {{
    nome: "Lucas",
    idade: 20,
    programador: true
}}

mostrar(usuario.nome)
mostrar(usuario.idade)
Ideia importante: quando seus dados começam a ter nome e significado próprio, um objeto costuma ser mais claro do que um monte de variáveis soltas.
Módulo 8

Escolha múltipla: escolha/switch

Quando uma variável pode cair em vários casos bem definidos, escolha ou switch deixa o fluxo mais legível.

exemplo.jls JLScript
va opcao = 2

escolha (opcao) {{
    caso 1 {{
        mostrar("Cadastrar")
    }}

    caso 2 {{
        mostrar("Entrar")
    }}

    padrao {{
        mostrar("Opção inválida")
    }}
}}

Na forma inglesa, use switch, case e default.

Módulo 9

Tratamento de erros

Blocos de tratamento permitem reagir a falhas sem encerrar toda a lógica de forma desorganizada.

exemplo.jls JLScript
tente {{
    mostrar("Executando operação")
}} capture (erro) {{
    mostrar("Ocorreu um erro")
    mostrar(erro)
}} finalmente {{
    mostrar("Processo finalizado")
}}

A versão inglesa usa try, catch e finally.

Módulo 10

Imports e módulos

Recursos maiores ficam em módulos. O formato atual usa # para módulos oficiais.

exemplo.jls JLScript
import #math

Você pode importar mais de um módulo:

exemplo.jls JLScript
import [
    #math,
    #json,
    #file
]

Alias

exemplo.jls JLScript
import #database como db

va banco = db.sqlite("app.db")
IntelliSense ideal: depois de db., o editor deve mostrar somente membros de #database. Se você trocar o import, as sugestões também precisam mudar. Essa é a separação que deixa a experiência parecida com linguagens maduras.
Módulo 11

Tempo e durações

JLScript possui suporte nativo a unidades de duração, o que deixa temporizadores mais legíveis.

exemplo.jls JLScript
esperar(500 ms)
esperar(2 segundos)
esperar(1 minuto)

Executar depois

exemplo.jls JLScript
tempo.depois(2 segundos, func() {{
    mostrar("Executado depois")
}})

Executar repetidamente

exemplo.jls JLScript
va timer = tempo.cada(1 segundo, func() {{
    mostrar("tick")
}})
Módulo 12

APIs e HTTP

No nível avançado, o módulo #api fornece recursos de servidor e cliente HTTP. A API pública pode evoluir entre versões, então sempre use a documentação correspondente ao seu build.

api_server.jls JLScript
import #api

va app = api.criar(3000)

app.get("/", func(req, res) {{
    res.enviar("Olá pelo JLScript")
}})

app.iniciar()

Consumindo uma API

api_client.jls JLScript
import #api

va resposta = api.obter(
    "https://api.exemplo.com/usuarios"
)

mostrar(resposta)
Módulo 13

Banco de dados

Com #database, o código pode trabalhar com armazenamento persistente. Um exemplo de entrada é SQLite.

database.jls JLScript
import #database como db

va banco = db.sqlite("app.db")

banco.executar(
    "CREATE TABLE usuarios (id INTEGER PRIMARY KEY, nome TEXT)"
)

O ponto importante aqui não é decorar SQL. É perceber como import, alias, objetos e chamadas de método trabalham juntos no mesmo programa.

Módulo 14

Conectores e dispositivos

Os módulos #connector e #mobile permitem trabalhar com conexões e dispositivos suportados.

mobile.jls JLScript
import #connector
import #mobile

va conexao = connector.adb(
    "192.168.1.2",
    5555,
    timeout = 20 segundos
)

va celular = mobile.conectar(conexao)

mostrar(celular.estatisticas())
Repare na sintaxe: timeout = 20 segundos usa argumento nomeado e uma duração legível. É exatamente o tipo de detalhe que dá identidade própria à linguagem.
Módulo 15

UI e Style

O JLScript também possui uma camada para interfaces. A ideia é descrever estrutura e estilo sem abandonar a linguagem.

interface.jls JLScript
import [
    #ui,
    #style
]

va app = ui.janela()

app.titulo("Meu App")

app.ui({{
    main(class="app") {{
        h1("Bem-vindo")

        p("Interface criada com JLScript")

        button(class="acao") {{
            text = "Entrar"
        }}
    }}
}})

app.style({{
    background("#101010"),
    color("#ffffff")
}})

app.abrir()
Módulo 16

Pensando como programador: escopo e organização

Chegar ao avançado não é aprender mais palavras-chave. É organizar melhor o código.

organizacao.jls JLScript
func calcularTotal(preco, quantidade) {{
    va subtotal = preco * quantidade

    se (subtotal > 100) {{
        retorne subtotal * 0.9
    }}

    retorne subtotal
}}

va total = calcularTotal(30, 4)

mostrar(total)

O valor subtotal pertence à função. O restante do programa usa apenas a interface pública da função: parâmetros e retorno. Essa separação reduz bugs e facilita manutenção.

Módulo 17

Projeto final: juntando os conceitos

Este exemplo reúne módulos, banco, função, condição, objeto, callback e servidor HTTP.

projeto_final.jls JLScript
import [
    #api,
    #database
]

va banco = database.sqlite("usuarios.db")

func criarUsuario(nome, idade) {{
    se (nome == null) {{
        retorne false
    }}

    banco.executar(
        "INSERT INTO usuarios (nome, idade) VALUES (?, ?)"
    )

    retorne true
}}

va app = api.criar(3000)

app.get("/", func(req, res) {{
    res.enviar({{
        linguagem: "JLScript",
        status: "online"
    }})
}})

app.iniciar()

mostrar("Servidor iniciado")

A partir daqui, o próximo nível é separar arquivos, criar módulos próprios, testar funções, organizar bibliotecas e usar o IntelliSense para navegar pelo projeto.

Módulo 18

Mapa de estudo

Uma ordem boa para estudar JLScript sem transformar seu cérebro em uma pilha de stack traces:

1Saída e valores
2Variáveis e operadores
3Condições
4Loops
5Funções
6Listas e objetos
7Imports e módulos
8Tratamento de erros
9APIs, banco e dispositivos
10Projetos completos