DEV Community

Cover image for Regras de escrita da JLScript
JLScript
JLScript

Posted on

Regras de escrita da JLScript

Regras de escrita da JLScript

JLScript utiliza palavras próprias.

Algumas são palavras em português, outras são abreviações escolhidas pela linguagem e outras permanecem com nomes universais usados na programação.

Isso significa que uma palavra que parece correta em português não é necessariamente uma palavra válida em JLScript.

Por exemplo:

func saudacao() {
    mostrar("Olá")
}
Enter fullscreen mode Exit fullscreen mode

A palavra oficial é:

func
Enter fullscreen mode Exit fullscreen mode

Não:

funcao
função
function
fun
funçao
Enter fullscreen mode Exit fullscreen mode

func é uma palavra da linguagem.

Não deve ser traduzida, completada ou “corrigida”.


1. Não tente completar as palavras da linguagem

Uma das confusões mais comuns é olhar:

func
Enter fullscreen mode Exit fullscreen mode

e imaginar que seria apenas uma abreviação informal de:

funcao
Enter fullscreen mode Exit fullscreen mode

Não é.

func é o token oficial.

Correto:

func calcular() {
    retorne 10
}
Enter fullscreen mode Exit fullscreen mode

Errado:

funcao calcular() {
    retorne 10
}
Enter fullscreen mode Exit fullscreen mode

Errado:

função calcular() {
    retorne 10
}
Enter fullscreen mode Exit fullscreen mode

Errado:

function calcular() {
    return 10
}
Enter fullscreen mode Exit fullscreen mode

A linguagem não tenta adivinhar qual palavra você queria escrever.


2. va significa va

Outra palavra que costuma ser alterada automaticamente é:

va
Enter fullscreen mode Exit fullscreen mode

Ela é uma declaração oficial da JLScript.

Correto:

va nome = "Lucas"
Enter fullscreen mode Exit fullscreen mode

Não existe necessidade de transformar isso em:

var nome = "Lucas"
Enter fullscreen mode Exit fullscreen mode

ou:

variavel nome = "Lucas"
Enter fullscreen mode Exit fullscreen mode

ou:

variável nome = "Lucas"
Enter fullscreen mode Exit fullscreen mode

Essas palavras podem fazer sentido para uma pessoa lendo português, mas não fazem parte da sintaxe.

Em código, quem decide a palavra correta é a gramática da linguagem, não o corretor ortográfico.


3. Palavras da JLScript são exatas

Considere:

se (idade >= 18) {
    mostrar("Permitido")
} senao {
    mostrar("Negado")
}
Enter fullscreen mode Exit fullscreen mode

As palavras são:

se
senao
Enter fullscreen mode Exit fullscreen mode

Não:

senão
senaum
seNao
se não
Enter fullscreen mode Exit fullscreen mode

Mesmo que senão seja a grafia normal da palavra em português, a palavra-chave JLScript é:

senao
Enter fullscreen mode Exit fullscreen mode

sem acento.

Isso é proposital.

Código precisa ser fácil de digitar em diferentes teclados e ambientes.


4. Não coloque acentos em palavras-chave

Palavras da sintaxe devem ser escritas exatamente como foram definidas.

Correto:

func
retorne
senao
Enter fullscreen mode Exit fullscreen mode

Evite inventar versões como:

função
retôrne
senão
Enter fullscreen mode Exit fullscreen mode

Strings continuam aceitando português normalmente:

mostrar("Função executada com sucesso")
Enter fullscreen mode Exit fullscreen mode

Aqui pode usar:

ção
á
é
í
ó
ú
ã
õ
ç
Enter fullscreen mode Exit fullscreen mode

porque isso é texto.

A regra é diferente para palavras reservadas.


5. Tabela rápida de erros comuns

❌ Errado ✅ JLScript
funcao func
função func
function func
var va
variavel va
senão senao
retornar retorne
retorno retorne
print mostrar
imprimir mostrar
importar import
importa import
verdadeiro true
falso false
nulo null

Algumas estruturas possuem aliases oficiais em inglês.

Quando existe alias, ele faz parte da linguagem.

Quando não existe, não invente um.


6. Português não significa tradução literal

JLScript utiliza português como parte da identidade da linguagem.

Mas isso não significa que toda palavra técnica foi traduzida.

Por exemplo, usamos:

import #api
Enter fullscreen mode Exit fullscreen mode

e não:

importar #api
Enter fullscreen mode Exit fullscreen mode

Também usamos:

API
JSON
HTTP
GET
POST
PUT
PATCH
DELETE
Enter fullscreen mode Exit fullscreen mode

Esses termos são padrões conhecidos mundialmente.

Não existe vantagem em transformar:

POST
Enter fullscreen mode Exit fullscreen mode

em alguma palavra diferente apenas para parecer mais português.

JLScript tenta simplificar programação, não renomear a computação inteira.


7. Aliases só existem quando são oficiais

JLScript possui alguns pares como:

se       / if
senao    / else

enquanto / while
para     / for

pare     / break
continuar / continue

retorne  / return
Enter fullscreen mode Exit fullscreen mode

Isso significa que:

se (ativo) {
    mostrar("Ativo")
}
Enter fullscreen mode Exit fullscreen mode

pode possuir uma forma equivalente suportada:

if (ativo) {
    mostrar("Ativo")
}
Enter fullscreen mode Exit fullscreen mode

Mas isso não autoriza criar qualquer tradução.

Por exemplo:

mostrar / print
Enter fullscreen mode Exit fullscreen mode

só deve ser tratado como alias se print realmente estiver registrado como alias no runtime.

Não suponha.


8. Não confie no Google para corrigir JLScript

JLScript é uma linguagem própria.

Ferramentas genéricas podem interpretar uma palavra como erro de português ou tentar converter o código para JavaScript, Python ou outra linguagem conhecida.

Você pode pesquisar:

JLScript func
Enter fullscreen mode Exit fullscreen mode

e algum sistema tentar sugerir:

função
function
Enter fullscreen mode Exit fullscreen mode

Isso não torna a sugestão correta.

A prioridade deve ser:

1. documentação oficial JLScript
2. autocomplete oficial da extensão
3. JLShell
4. parser / lint da linguagem
5. testes
6. fontes externas
Enter fullscreen mode Exit fullscreen mode

Google pode ajudar a encontrar conceitos gerais.

Ele não define a gramática da JLScript.


9. Cuidado com corretores automáticos

Imagine escrever:

senao
Enter fullscreen mode Exit fullscreen mode

e um editor transformar em:

senão
Enter fullscreen mode Exit fullscreen mode

Para português normal isso parece uma correção.

Para JLScript acabou de criar um erro.

O mesmo pode acontecer com:

func
va
retorne
Enter fullscreen mode Exit fullscreen mode

Por isso arquivos .jls devem utilizar ferramentas que reconheçam a linguagem.

A extensão oficial do VS Code existe justamente para que o editor saiba:

Isso não é texto em português. Isso é código JLScript.


10. Erro de palavra reservada

Quando uma palavra parece uma keyword JLScript, mas está escrita incorretamente, o erro deveria ser claro.

Exemplo:

funcao soma(a, b) {
    retorne a + b
}
Enter fullscreen mode Exit fullscreen mode

Um diagnóstico ideal seria:

Erro de sintaxe

'funcao' não é uma palavra-chave da JLScript.

Você quis escrever:

    func soma(a, b) {
        ...
    }

Esperado: func
Recebido: funcao
Enter fullscreen mode Exit fullscreen mode

Muito melhor do que:

unexpected identifier
Enter fullscreen mode Exit fullscreen mode

que basicamente significa “deu ruim, boa sorte”.


11. Sugestões por proximidade

A JLScript pode reconhecer erros comuns.

Exemplo:

senão {
}
Enter fullscreen mode Exit fullscreen mode

O parser/linter pode responder:

Palavra-chave desconhecida: senão

Talvez você queira:

    senao
Enter fullscreen mode Exit fullscreen mode

Outro:

var nome = "Lucas"
Enter fullscreen mode Exit fullscreen mode

Sugestão:

'var' não é um declarador JLScript.

Use:

    va
    let
    ins
Enter fullscreen mode Exit fullscreen mode

Outro:

funcao teste() {
}
Enter fullscreen mode Exit fullscreen mode

Sugestão:

'funcao' não existe na sintaxe.

Use:

    func
Enter fullscreen mode Exit fullscreen mode

Isso ajuda principalmente quem está conhecendo a linguagem.


12. Erros de estrutura

Nem todo erro é palavra escrita errada.

Isto:

func soma(a, b) {
    retorne a + b
Enter fullscreen mode Exit fullscreen mode

está faltando:

}
Enter fullscreen mode Exit fullscreen mode

O diagnóstico deveria explicar:

Bloco não finalizado.

A função 'soma' foi aberta nesta linha:

func soma(a, b) {

Esperado antes do fim do arquivo:

}
Enter fullscreen mode Exit fullscreen mode

13. Parêntese não fechado

Errado:

mostrar("Olá"
Enter fullscreen mode Exit fullscreen mode

Ideal:

Parêntese não fechado em mostrar().

Esperado:

mostrar("Olá")
             ^
Enter fullscreen mode Exit fullscreen mode

14. String não fechada

Errado:

va nome = "Lucas
Enter fullscreen mode Exit fullscreen mode

Ideal:

String não finalizada.

A string começou com " mas não possui fechamento.
Enter fullscreen mode Exit fullscreen mode

Correto:

va nome = "Lucas"
Enter fullscreen mode Exit fullscreen mode

15. Operador escrito incorretamente

Errado:

se (idade = 18) {
}
Enter fullscreen mode Exit fullscreen mode

Se a intenção for comparar:

se (idade == 18) {
}
Enter fullscreen mode Exit fullscreen mode

A linguagem deve tentar diferenciar:

=
atribuição

==
comparação
Enter fullscreen mode Exit fullscreen mode

Esse é um dos erros mais comuns entre iniciantes em praticamente toda linguagem que usa essa convenção. Os humanos realmente concordaram coletivamente em manter essa armadilha por décadas.


16. Biblioteca escrita incorretamente

Correto:

import #math
Enter fullscreen mode Exit fullscreen mode

Errado:

import #mat
Enter fullscreen mode Exit fullscreen mode

O erro deveria informar:

Módulo '#mat' não encontrado.

Módulos semelhantes:

    #math
Enter fullscreen mode Exit fullscreen mode

Outro exemplo:

import #ap
Enter fullscreen mode Exit fullscreen mode

Sugestão:

Você quis dizer #api?
Enter fullscreen mode Exit fullscreen mode

17. Biblioteca antiga

Quando uma biblioteca mudou de nome, o erro não deveria simplesmente dizer que ela não existe.

Por exemplo, em código novo:

import #fs
Enter fullscreen mode Exit fullscreen mode

é preferível para filesystem.

Se uma forma antiga ainda existir por compatibilidade, o linter pode avisar:

#file é uma forma legada.

Prefira:

    #fs
Enter fullscreen mode Exit fullscreen mode

Isso permite modernizar projetos sem quebrar código antigo imediatamente.


18. Método que não pertence ao tipo

Exemplo:

va nome = "Lucas"

nome.adicionar("Pedro")
Enter fullscreen mode Exit fullscreen mode

nome é String.

adicionar() é uma operação de List.

Erro útil:

String não possui o método 'adicionar'.

Tipo recebido:
    String

Talvez você esteja tentando trabalhar com uma List.
Enter fullscreen mode Exit fullscreen mode

19. Método parecido

Imagine:

usuarios.adiciona(usuario)
Enter fullscreen mode Exit fullscreen mode

mas o método oficial é:

usuarios.adicionar(usuario)
Enter fullscreen mode Exit fullscreen mode

Em vez de apenas:

método não encontrado
Enter fullscreen mode Exit fullscreen mode

o diagnóstico pode sugerir:

List não possui 'adiciona'.

Método semelhante:

    adicionar(valor)
Enter fullscreen mode Exit fullscreen mode

20. Quantidade errada de argumentos

Exemplo:

math.subtrair(10 - 2)
Enter fullscreen mode Exit fullscreen mode

Parece visualmente que existem dois números.

Mas existe apenas um argumento:

10 - 2
Enter fullscreen mode Exit fullscreen mode

A expressão é calculada primeiro.

Então a função recebe:

8
Enter fullscreen mode Exit fullscreen mode

apenas.

A forma correta é:

math.subtrair(10, 2)
Enter fullscreen mode Exit fullscreen mode

O erro deve explicar:

math.subtrair() esperava 2 argumentos.

Recebido:
    1

Uso:

    math.subtrair(a, b)
Enter fullscreen mode Exit fullscreen mode

21. Variável inexistente

mostrar(usuarios)
Enter fullscreen mode Exit fullscreen mode

sem existir:

va usuarios = [...]
Enter fullscreen mode Exit fullscreen mode

deve resultar em algo claro:

Variável 'usuarios' não encontrada.

Verifique:

• se ela foi declarada;
• se o nome está escrito corretamente;
• se ela pertence ao escopo atual.
Enter fullscreen mode Exit fullscreen mode

Se existir:

usuario
Enter fullscreen mode Exit fullscreen mode

o sistema também pode sugerir:

Você quis dizer 'usuario'?
Enter fullscreen mode Exit fullscreen mode

22. Maiúsculas e minúsculas

Não presuma que:

usuario
Usuario
USUARIO
Enter fullscreen mode Exit fullscreen mode

representam automaticamente a mesma coisa.

Prefira nomes consistentes:

va usuario = {}
Enter fullscreen mode Exit fullscreen mode

e continue usando:

usuario.nome
Enter fullscreen mode Exit fullscreen mode

Não:

Usuario.nome
USUARIO.nome
Enter fullscreen mode Exit fullscreen mode

23. Erro de escopo

func calcular() {
    va resultado = 10
}

mostrar(resultado)
Enter fullscreen mode Exit fullscreen mode

Se resultado existe apenas dentro da função, o erro deveria ensinar:

'resultado' não existe neste escopo.

Ele foi declarado dentro de:

    calcular()

Declare o valor fora da função ou retorne o resultado.
Enter fullscreen mode Exit fullscreen mode

Melhor:

func calcular() {
    retorne 10
}

va resultado = calcular()

mostrar(resultado)
Enter fullscreen mode Exit fullscreen mode

24. retorne fora de função

Errado:

retorne 10
Enter fullscreen mode Exit fullscreen mode

no topo do arquivo.

Erro:

'retorne' só pode ser utilizado dentro de uma função.
Enter fullscreen mode Exit fullscreen mode

Correto:

func numero() {
    retorne 10
}
Enter fullscreen mode Exit fullscreen mode

25. pare fora de loop

Errado:

pare
Enter fullscreen mode Exit fullscreen mode

Erro:

'pare' só pode interromper uma estrutura compatível.

Use dentro de:

    para
    enquanto
    escolha

quando aplicável.
Enter fullscreen mode Exit fullscreen mode

26. continuar fora de loop

continuar
Enter fullscreen mode Exit fullscreen mode

fora de:

para
enquanto
Enter fullscreen mode Exit fullscreen mode

deve gerar erro claro.


27. aguarda fora de fluxo assíncrono

Errado:

va res = aguarda api.get(url)
Enter fullscreen mode Exit fullscreen mode

fora de contexto assíncrono.

Correto:

fluxo func carregar() {

    va res =
        aguarda api.get(url)

    retorne res
}
Enter fullscreen mode Exit fullscreen mode

Erro sugerido:

'aguarda' precisa de um contexto assíncrono.

Coloque a operação dentro de:

    fluxo func ...
Enter fullscreen mode Exit fullscreen mode

28. Não confunda cliente HTTP com #api

Consumir:

va backend =
    api("https://api.exemplo.com")
Enter fullscreen mode Exit fullscreen mode

Criar servidor:

import #api

va app =
    api.servidor(...)
Enter fullscreen mode Exit fullscreen mode

São responsabilidades diferentes.

Se alguém tentar usar método de servidor em um cliente, a linguagem deveria explicar essa diferença.


29. Erros de UI

Se escrever:

buton("Entrar")
Enter fullscreen mode Exit fullscreen mode

quando o elemento é:

button("Entrar")
Enter fullscreen mode Exit fullscreen mode

o diagnóstico pode sugerir:

Elemento UI 'buton' não encontrado.

Talvez você queira:

    button
Enter fullscreen mode Exit fullscreen mode

O mesmo vale para:

imput → input
selext → select
opition → option
Enter fullscreen mode Exit fullscreen mode

30. Erro de propriedade Style

Errado:

titulo.style {
    collor: #fff
}
Enter fullscreen mode Exit fullscreen mode

Correto:

titulo.style {
    cor: #fff
}
Enter fullscreen mode Exit fullscreen mode

Se houver alias oficial:

cor / color
Enter fullscreen mode Exit fullscreen mode

ambos funcionam.

Mas:

collor
colourr
corzinha
Enter fullscreen mode Exit fullscreen mode

não.

Diagnóstico:

Propriedade Style 'collor' desconhecida.

Propriedades semelhantes:

    color
    cor
Enter fullscreen mode Exit fullscreen mode

31. Erro de contexto Style

Exemplo:

titulo.style {

    terminal {
        tamanhoFonte: 30px
    }
}
Enter fullscreen mode Exit fullscreen mode

Se tamanhoFonte só fizer sentido na UI:

'tamanhoFonte' não está disponível no contexto terminal.

Contexto suportado:
    ui
Enter fullscreen mode Exit fullscreen mode

Não ignore silenciosamente.

Código aparentemente funcionando com propriedades ignoradas é uma receita excelente para horas de confusão.


32. Erro de cor

Correta:

va cor = #50fa7b
Enter fullscreen mode Exit fullscreen mode

Inválida:

va cor = #gg1234
Enter fullscreen mode Exit fullscreen mode

O erro deveria ser:

Cor hexadecimal inválida: #gg1234
Enter fullscreen mode Exit fullscreen mode

Não:

variável gg1234 não encontrada
Enter fullscreen mode Exit fullscreen mode

O erro precisa falar sobre o que realmente aconteceu.


33. Como evitar esses erros

Use a extensão oficial

Ela deve conhecer:

keywords
bibliotecas
métodos
aliases
UI
Style
tipos
Enter fullscreen mode Exit fullscreen mode

e oferecer autocomplete correto.


Use o autocomplete

Começou:

func
Enter fullscreen mode Exit fullscreen mode

não precisa confiar na memória para cada detalhe.

Começou:

usuarios.
Enter fullscreen mode Exit fullscreen mode

veja os métodos registrados para List.


Rode o lint

jls lint arquivo.jls
Enter fullscreen mode Exit fullscreen mode

Ele deve encontrar problemas antes da execução quando possível.


Formate o código

jls fmt arquivo.jls
Enter fullscreen mode Exit fullscreen mode

Formatação consistente também ajuda a encontrar blocos quebrados.


Execute arquivos pequenos enquanto programa

Não escreva 600 linhas e execute pela primeira vez no final.

Prefira:

escreve
↓
executa
↓
corrige
↓
continua
Enter fullscreen mode Exit fullscreen mode

Leia o erro inteiro

Não leia apenas:

SyntaxError
Enter fullscreen mode Exit fullscreen mode

e ignore:

linha
coluna
esperado
recebido
dica
Enter fullscreen mode Exit fullscreen mode

Essas informações existem justamente para localizar o problema.


34. Não deixe Google redefinir a linguagem

Se uma ferramenta externa disser:

"func não existe, use function"
Enter fullscreen mode Exit fullscreen mode

isso pode estar correto para outra linguagem.

Para JLScript, não.

Se disser:

"va deveria ser var"
Enter fullscreen mode Exit fullscreen mode

também está tentando interpretar JLScript como outra coisa.

A fonte de verdade deve ser:

Gramática JLScript
↓
Parser
↓
Runtime
↓
Metadata oficial
↓
Extensão
↓
Documentação
Enter fullscreen mode Exit fullscreen mode

Não:

corretor ortográfico
Google
autocomplete genérico
Enter fullscreen mode Exit fullscreen mode

35. Guia rápido para quem vem de outra linguagem

JavaScript

Não presuma automaticamente:

var
const
console.log
function
Enter fullscreen mode Exit fullscreen mode

JLScript possui sua própria sintaxe.


Python

Não presuma:

def
print
elif
None
Enter fullscreen mode Exit fullscreen mode

C / C++

Não presuma que toda declaração precisa informar o tipo manualmente.


Português comum

Não transforme automaticamente:

func → função
senao → senão
va → variável
Enter fullscreen mode Exit fullscreen mode

Código não é uma redação.

Palavras reservadas são símbolos da gramática.


36. Regra de ouro

Quando estiver em dúvida sobre uma palavra da linguagem:

não tente adivinhar como ela deveria ser escrita.

Consulte:

autocomplete
.help
documentação
lint
exemplos oficiais
Enter fullscreen mode Exit fullscreen mode

Uma letra diferente pode transformar uma palavra reservada em um identificador desconhecido.


Resumo rápido

✅ func
❌ funcao
❌ função

✅ va
❌ var
❌ variavel

✅ senao
❌ senão

✅ retorne
❌ retornar

✅ mostrar()
❌ imprimir()

✅ import
❌ importar

✅ #fs
⚠ #file em código legado

✅ cor
✅ color
❌ collor
Enter fullscreen mode Exit fullscreen mode

A JLScript foi criada para ser simples de ler, mas simplicidade não significa que sua sintaxe seja aproximada.

Cada palavra-chave possui uma forma oficial.

Aprender essas poucas regras evita boa parte dos erros mais comuns logo no começo.

Top comments (0)