Entendendo os erros de compilação

Entendendo os Erros de Compilação

> Tutorial LeekScript

Você codifica sua IA como um abençoado. As linhas rolam e os nomes de variáveis e funções muito lógicas, como sfatyu_2, seguem um ao outro, a vida é boa... De repente ! A tecla "salvar" é pressionada e seu código é verificado pelo compilador. Apoia o seu olhar, intensamente... E aqui está o drama! Uma (ou mais!) grandes linhas vermelhas aparecem na parte inferior do seu editor, o que essas estranhas e esotéricas fórmulas mágicas podem significar?

Este guia revelará a verdade para você, para que você também possa se tornar um conhecedor.

Esperava-se um fim de declaração aqui

Fim da instrução? Sim, é o ";" no final de cada linha. Esta mensagem indica uma linha onde falta uma destas figuras. Tenha cuidado embora! a linha indicada é em geral a linha anterior ou posterior à incriminada.

!Faltando um;

Aqui falta um ";" no final da linha 18, e a mensagem nos diz que a linha antes de useWeapon não tem seu ponto e vírgula!

Correção: moveToward(inimigo);

Fim de arquivo inesperado

Mais insidioso! É o mesmo erro do anterior, mas desta vez é a última linha do seu AI que não tem ponto e vírgula. !unexp EoF

Correção: useWeapon(inimigo);

Isso também pode ser devido a um String não fechado: !EoF 2

Correção: say("Eu ganhei!");

Variável ou função desconhecida

Quem esqueceu de declarar sua variável? Um breve retorno ao tutorial sobre Variables e o tutorial sobre Functions pode ser útil.

!var ou func desconhecido

Aqui, a variável enemy não é declarada. Você deve primeiro criá-lo com a palavra-chave var. Correção: var inimigo = getNearestEnemy();

E para este então? !função ex desconhecida

Bem, o autor é apenas um macaco com um teclado, e não viu que ele usou getNeerest (que não existe) ao invés de getNearest, declarado logo acima.

Este nome de variável não está disponível

Você não pode redeclarar uma variável com o mesmo nome de uma variável já declarada.

![](https://imgur.com/Qx5n006.png)

Correção (feio): var moi2 = 1 Uma correção melhor seria usar nomes que realmente correspondam à função de suas variáveis.

Aviso: Este erro também pode aparecer devido ao nome de uma variável global.

Este erro também cairá sobre você se você usar uma vírgula em vez do reverenciado ponto e vírgula: ![](https://imgur.com/cCpqtxS.png)

Correção: var inimigo = getNearestEnemy();

Isso se deve à declaração da variável inline: var variável1 = 1, variável2 = 2; é uma sintaxe perfeitamente válida (consulte Variáveis).

Este nome de função não está disponível

Como no erro anterior, você não pode reutilizar um nome de função que já foi usado.

![](https://imgur.com/UUfrixR.png)

Correção (muito feia): function getNearest2() {

Não é possível usar este nome de parâmetro

Então, estamos tentando usar o nome de uma variável global como um nome de parâmetro, certo? Você sabe o que pode custar se você se desentender com um dos meus colegas menos amigáveis?

![](https://imgur.com/xnAOUAV.png)

Correção :

Parênteses de fechamento esperados

Como indica a mensagem de erro, falta um parêntese na linha indicada. !se errado

Aqui a linha 19 do código deve ser if (not isAlive(enemy)) {

Um valor era esperado aqui

Uma chamada de função não foi fechada? Aqui está o que você ganha! !valor esperado

Consertar moveToward(inimigo);

Número incorreto de parâmetros

Parâmetros? kezako? Uma revisão rápida do tutorial Functions está em ordem!

!nb parâmetro incorreto

Aqui, a função moveToward aceita de 1 a 2 parâmetros, e damos 0. Obviamente, o compilador acerta em nossos dedos. Corrija moveToward(enemy); ou moveToward(enemy, mp); com mp um número.

Observe que você obterá o mesmo erro se fornecer muitos parâmetros para uma função (Ex.: moveToward(enemy, mp, thing);).

Nem todos os blocos foram fechados

O que é um bloco? Bem, é uma seção de código cercada por { }. Aqui, abrimos um bloco com { sem fechá-lo. !blocos não fechados

Aqui o } está faltando após o final do if. O compilador, portanto, indica o final do bloco atual (aqui o final do arquivo) para indicar que esquecemos de fechar todos os blocos. Correção :

Sem bloqueios para fechar

Esta situação é o inverso da anterior. fechamos um quarteirão av