Menu
Coddy logo textTech

¿Qué es un error de sintaxis?

Un error de sintaxis es un fallo en la estructura del código, como olvidar dos puntos, un paréntesis o unas comillas, que rompe las reglas gramaticales de un lenguaje de programación. El compilador o el intérprete rechaza el programa antes de que se ejecute ninguna parte.

Por Kevin Spektor, Cofundador y CTO

Actualizado el 24 de septiembre de 2026

Antes de ejecutar una sola línea de tu programa, Python lee el archivo entero y comprueba que sigue la gramática del lenguaje. Si una línea rompe esa gramática, no se ejecuta nada. Ejecuta este programa y fíjate en lo que no ocurre: el primer print nunca imprime.

  File "main.py", line 4
    if temperature > 30
                       ^
SyntaxError: expected ':'

La línea 1 es perfectamente válida y, sin embargo, "Checking the temperature" no aparece en la salida. Python rechazó el archivo completo porque una línea if tiene que terminar en dos puntos. Añade el : después de 30, vuelve a ejecutarlo y se imprimen las dos líneas.

Cómo se detecta un error de sintaxis

Todo lenguaje de programación tiene una gramática: qué palabras se permiten, dónde se abren y se cierran los paréntesis, qué debe seguir a if. El programa que la comprueba se llama parser (analizador sintáctico) y trabaja en la primera etapa del proceso que convierte el código fuente en algo que una máquina puede ejecutar.

  1. El tokenizador divide el texto en tokens: if, temperature, >, 30, etc.
  2. El parser lee los tokens en orden y los encaja en la gramática. Después de if temperature > 30 espera un :, pero se encuentra con el final de la línea.
  3. Se detiene e informa del punto donde se rindió: el archivo, el número de línea y un acento circunflejo (^) bajo la posición.
  4. Como el análisis falló, no se genera código, así que no se ejecuta ninguna línea del programa.

En CPython el parser se ejecuta cada vez que inicias un script. En los lenguajes con un paso de compilación aparte, esta comprobación la hace el compilador: gcc, clang y javac se niegan a producir un programa mientras quede un solo error de sintaxis. Por eso los errores de sintaxis se cuentan entre los errores de compilación, a diferencia de un error en tiempo de ejecución, que ocurre cuando el programa ya está en marcha.

Errores de sintaxis comunes en Python

Estos son los fallos que hay detrás de la mayoría de los errores de sintaxis que ve un principiante, con el mensaje exacto que imprime Python 3.12.

CódigoMensajeSolución
if x > 3SyntaxError: expected ':'Termina las líneas if, for, while, def y class con :
print("Hi"SyntaxError: '(' was never closedCierra cada paréntesis que abras
name = "AdaSyntaxError: unterminated string literal (detected at line 1)Cierra las comillas
if x = 5:SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?Compara con ==
print "Hi"SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?Python 3 necesita print(...)
if a > 0 && b > 0:SyntaxError: invalid syntaxPython usa and, or y not
Un if sin ninguna línea sangrada debajoIndentationError: expected an indented block after 'if' statement on line 1Sangra el cuerpo con cuatro espacios

IndentationError es un tipo de SyntaxError: en Python, la sangría forma parte de la gramática.

No toda errata es un error de sintaxis. pritn("hello") sigue la gramática a la perfección, porque un nombre seguido de paréntesis es una llamada a función. Python solo descubre que no existe ninguna función llamada pritn cuando llega a esa línea, y entonces lanza NameError: name 'pritn' is not defined. Did you mean: 'print'?. Eso es un error en tiempo de ejecución, y las líneas anteriores ya se han ejecutado.

Por qué la línea indicada puede estar mal

El parser informa del punto en el que ya no pudo seguir, que no siempre es el punto donde está el fallo. Un corchete sin cerrar es el caso clásico: el parser no puede saber que el corchete nunca se cerró hasta que ha leído más allá del lugar donde debería haberse cerrado.

  File "main.py", line 1
    prices = [4.50, 3.20, 7.80
             ^
SyntaxError: '[' was never closed

Python 3.10 y posteriores señalan el [ de apertura en la línea 1. Python 3.9 y anteriores solo decían invalid syntax en la línea 2, la línea siguiente al fallo real. Así que, cuando la línea indicada parezca correcta, revisa el final de la línea anterior.

Otros parsers se comportan igual. Ante SELECT name FORM users;, con FROM mal escrito, SQLite interpreta FORM como un alias (un segundo nombre) de la columna name y solo falla una palabra después:

Parse error near line 1: near "users": syntax error
  SELECT name FORM users;
                   ^--- error here

Errores de sintaxis en C, Java y JavaScript

Los lenguajes compilados informan de los errores de sintaxis al compilar, no al ejecutar. Aquí tienes una declaración sin su punto y coma, compilada con Clang (el compilador que ejecuta el comando gcc en 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

javac informa del mismo fallo en Java como error: ';' expected, y no se escribe ningún archivo .class. En C, una sola llave que falta puede producir una docena de errores más abajo en el archivo. Corrige el primero y vuelve a compilar, porque los demás suelen ser consecuencia suya.

Los motores de JavaScript como V8 analizan un script entero antes de ejecutarlo, igual que Python. Node.js rechaza este archivo antes de imprimir "start":

console.log("start");
if (x > 1 {
  console.log("big");
}
SyntaxError: Unexpected token '{'

En un navegador, un error de sintaxis impide que se ejecute ese archivo de script concreto, mientras que los demás scripts de la página siguen funcionando.

Cómo corregir un error de sintaxis

  1. Lee primero la última línea del mensaje. Nombra el problema: un : que falta, un ( sin cerrar, un token inesperado.
  2. Ve a la línea indicada y mira el acento circunflejo. Si la línea parece correcta, revisa la anterior.
  3. Comprueba las parejas. Cada (, [, { y cada comilla necesita su pareja. La mayoría de los editores resaltan el paréntesis correspondiente cuando el cursor está junto a uno.
  4. Comprueba la puntuación que exige el lenguaje: dos puntos y sangría en Python, punto y coma y llaves en C, Java y JavaScript.
  5. Corrige solo el primer error y vuelve a ejecutar. Los mensajes posteriores muchas veces los provoca el primero.
  6. Fíjate en el resaltado de sintaxis. Tras unas comillas sin cerrar, el resto del archivo suele tomar el color de las cadenas, lo que te muestra dónde empezó el problema.

La buena noticia es que los errores de sintaxis son los más fáciles de corregir: la herramienta te dice que algo está mal y más o menos dónde. Los tipos difíciles llegan después, cuando el código se ejecuta.

Qué leer después

Un programa que pasa el parser todavía puede fallar mientras se ejecuta, y eso es un error en tiempo de ejecución. Un programa que llega hasta el final pero imprime una respuesta equivocada tiene un error lógico, y esa página compara los tres tipos en una sola tabla. Para las reglas gramaticales en sí, lee la sintaxis de Python o la sintaxis de C, y practícalas en el curso de Python.

Preguntas frecuentes

¿Cuál es un ejemplo de error de sintaxis?
Olvidar el paréntesis de cierre en print("Hello" es un error de sintaxis, y también lo es una línea if sin sus dos puntos en Python: if x > 3. En C y en Java, el más frecuente es un punto y coma que falta al final de una instrucción. En todos los casos el código no sigue la gramática, así que no puede ejecutarse.
¿Qué diferencia hay entre un error de sintaxis y un error semántico?
Un error de sintaxis rompe la gramática, así que el código ni siquiera se puede analizar. Un error semántico es código gramaticalmente correcto cuyo significado está mal. Algunos libros usan el término para los errores de tipo que rechaza el compilador, como asignar texto a un int en Java; otros lo usan como otro nombre del error lógico.
¿Qué es un error de sintaxis en C?
En C es código que el compilador no puede analizar, casi siempre un punto y coma que falta, una llave sin pareja o una palabra clave mal escrita. gcc y clang muestran el archivo, la línea y la columna, por ejemplo main.c:4:18: error: expected ';' at end of declaration, y no generan ningún ejecutable hasta que corriges todos los errores.
¿Por qué Python no corrige solo los errores de sintaxis?
Porque la mayoría de los errores de sintaxis admiten más de una corrección, y una suposición equivocada cambiaría lo que significa el programa. Un corchete sin cerrar podría tener que cerrarse después del primer elemento o después del décimo. Las versiones modernas de Python sugieren una corrección probable, como Did you mean print(...)?, pero te dejan la decisión a ti.
¿Qué significa error de sintaxis en una calculadora?
Lo mismo que en el código: la expresión que escribiste no sigue las reglas de la calculadora, así que no se puede evaluar. Las causas típicas son un paréntesis sin cerrar, dos operadores seguidos o usar la tecla de resta donde hace falta el signo negativo. Una TI-84, por ejemplo, muestra ERR:SYNTAX.
Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR