O que é um erro de sintaxe?
Um erro de sintaxe é um erro na estrutura do código, como a falta de dois-pontos, de um parêntese ou de uma aspa, que quebra as regras gramaticais de uma linguagem de programação. O compilador ou o interpretador rejeita o programa antes que qualquer parte dele seja executada.
Atualizado em 24 de setembro de 2026
Antes de executar uma única linha do seu programa, o Python lê o arquivo inteiro e verifica se ele segue a gramática da linguagem. Se uma linha quebra essa gramática, nada é executado. Execute este programa e observe o que não acontece: o primeiro print nunca imprime.
File "main.py", line 4
if temperature > 30
^
SyntaxError: expected ':'
A linha 1 é perfeitamente válida, mas "Checking the temperature" não aparece na saída. O Python rejeitou o arquivo como um todo porque uma linha if precisa terminar com dois-pontos. Coloque o : depois de 30, execute de novo, e as duas linhas são impressas.
Como um erro de sintaxe é detectado
Toda linguagem de programação tem uma gramática: quais palavras são permitidas, onde os parênteses abrem e fecham, o que deve vir depois de if. O programa que verifica isso se chama analisador sintático (parser), e ele atua na primeira etapa da transformação do código-fonte em algo que uma máquina consegue executar.
- O tokenizador divide o texto em tokens:
if,temperature,>,30e assim por diante. - O parser lê os tokens em ordem e os encaixa na gramática. Depois de
if temperature > 30ele espera um:, mas encontra o fim da linha. - Ele para e informa o ponto em que desistiu: o arquivo, o número da linha e um circunflexo (
^) embaixo da posição. - Como a análise falhou, nenhum código é gerado, então nenhuma linha do programa executa.
No CPython o parser roda toda vez que você inicia um script. Em linguagens com uma etapa de build separada, é o compilador que faz essa verificação: gcc, clang e javac se recusam a gerar um programa enquanto restar um único erro de sintaxe. Por isso os erros de sintaxe são contados entre os erros de tempo de compilação, em contraste com um erro de tempo de execução, que acontece quando o programa já está executando.
Erros de sintaxe comuns em Python
Estes são os erros por trás da maioria dos erros de sintaxe que iniciantes veem, com a mensagem exata que o Python 3.12 mostra.
| Código | Mensagem | Correção |
|---|---|---|
if x > 3 | SyntaxError: expected ':' | Termine as linhas if, for, while, def e class com : |
print("Hi" | SyntaxError: '(' was never closed | Feche todo parêntese que você abrir |
name = "Ada | SyntaxError: unterminated string literal (detected at line 1) | Feche as aspas |
if x = 5: | SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? | Compare com == |
print "Hi" | SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)? | O Python 3 exige print(...) |
if a > 0 && b > 0: | SyntaxError: invalid syntax | O Python usa and, or e not |
Um if sem nenhuma linha indentada embaixo | IndentationError: expected an indented block after 'if' statement on line 1 | Indente o corpo com quatro espaços |
IndentationError é um tipo de SyntaxError: em Python, a indentação faz parte da gramática.
Nem todo erro de digitação é um erro de sintaxe. pritn("hello") segue a gramática perfeitamente, porque um nome seguido de parênteses é uma chamada de função. O Python só descobre que não existe nenhuma função chamada pritn quando chega a essa linha, e então lança NameError: name 'pritn' is not defined. Did you mean: 'print'?. Isso é um erro de tempo de execução, e as linhas acima dele já foram executadas.
Por que a linha informada pode estar errada
O parser informa o ponto em que não conseguiu mais continuar, que nem sempre é o ponto onde está o erro. Um colchete sem fechamento é o caso clássico: o parser só percebe que o colchete nunca foi fechado depois de ler além do lugar onde ele deveria ter sido fechado.
File "main.py", line 1
prices = [4.50, 3.20, 7.80
^
SyntaxError: '[' was never closed
O Python 3.10 e versões posteriores apontam para o [ de abertura na linha 1. O Python 3.9 e anteriores informavam só invalid syntax na linha 2, a linha depois do erro real. Então, quando a linha informada parecer correta, verifique o fim da linha de cima.
Outros parsers se comportam do mesmo jeito. Diante de SELECT name FORM users;, com FROM escrito errado, o SQLite lê FORM como um alias (um segundo nome) para a coluna name e só falha uma palavra depois:
Parse error near line 1: near "users": syntax error
SELECT name FORM users;
^--- error here
Erros de sintaxe em C, Java e JavaScript
Linguagens compiladas informam erros de sintaxe quando você compila, não quando executa. Aqui está uma declaração sem o ponto e vírgula, compilada com o Clang (o compilador que o comando gcc executa no macOS):
#include <stdio.h>
int main(void) {
int count = 3
printf("%d\n", count);
return 0;
}
main.c:4:18: error: expected ';' at end of declaration
O javac informa o mesmo erro em Java como error: ';' expected, e nenhum arquivo .class é gravado. Em C, uma única chave faltando pode produzir uma dúzia de erros mais abaixo no arquivo. Corrija o primeiro e compile de novo, porque os outros muitas vezes são consequência dele.
Motores de JavaScript como o V8 analisam um script inteiro antes de executá-lo, assim como o Python. O Node.js rejeita este arquivo antes de imprimir "start":
console.log("start");
if (x > 1 {
console.log("big");
}
SyntaxError: Unexpected token '{'
No navegador, um erro de sintaxe impede a execução apenas daquele arquivo de script, enquanto os outros scripts da página continuam executando.
Como corrigir um erro de sintaxe
- Leia primeiro a última linha da mensagem. Ela diz qual é o problema: um
:faltando, um(sem fechamento, um token inesperado. - Vá até a linha informada e olhe o circunflexo. Se a linha parecer correta, verifique a linha de cima.
- Confira os pares. Todo
(,[,{e toda aspa precisam de um par. A maioria dos editores destaca o parêntese correspondente quando o cursor está ao lado de um. - Confira a pontuação que a linguagem exige: dois-pontos e indentação em Python, ponto e vírgula e chaves em C, Java e JavaScript.
- Corrija só o primeiro erro e execute de novo. As mensagens seguintes muitas vezes são causadas pelo primeiro.
- Observe o destaque de sintaxe. Depois de uma aspa sem fechamento, o resto do arquivo costuma ficar da cor de uma string, o que mostra onde ela começou.
A boa notícia é que os erros de sintaxe são o tipo mais fácil de corrigir: a ferramenta diz que algo está errado e mais ou menos onde. Os tipos mais difíceis aparecem depois, quando o código executa.
Próximos passos
Um programa que passa pelo parser ainda pode travar enquanto executa, o que é um erro de tempo de execução. Um programa que executa até o fim mas imprime a resposta errada tem um erro de lógica, e essa página compara os três tipos em uma tabela. Para as regras gramaticais em si, leia sintaxe do Python ou sintaxe do C, e pratique no curso de Python.
Perguntas frequentes
Qual é um exemplo de erro de sintaxe?
print("Hello" é um erro de sintaxe, assim como uma linha if sem os dois-pontos em Python: if x > 3. Em C e Java, o mais comum é faltar o ponto e vírgula no fim de uma instrução. Em todos os casos o código não segue a gramática, então não pode executar.Qual é a diferença entre erro de sintaxe e erro semântico?
int em Java; outros o usam como outro nome para erro de lógica.O que é um erro de sintaxe em C?
gcc e o clang mostram o arquivo, a linha e a coluna, por exemplo main.c:4:18: error: expected ';' at end of declaration, e não geram nenhum executável até que todos os erros sejam corrigidos.Por que o Python não corrige erros de sintaxe sozinho?
Did you mean print(...)?, mas deixa a decisão com você.O que significa erro de sintaxe na calculadora?
ERR:SYNTAX.