# AST o árbol de sintaxis abstracta: qué es y para qué sirve

> Un AST convierte el código en nodos con significado para poder analizarlo o transformarlo. Esta guía explica parsers, formatos y límites sin confundir estructura con comportamiento.

- URL canónica: https://visteesto.com/nota/ast-arbol-sintaxis-abstracta-que-es
- Autor: [Martin Rodriguez](https://visteesto.com/autor/martin-rodriguez)
- Publicado: 2026-10-02T21:00:00.000Z
- Actualizado: 2026-10-02T21:00:00.000Z
- Sección: Tecnología
- Tema: herramientas-programacion-ast
- Idioma: es
- Consulta principal: qué es un AST árbol de sintaxis abstracta

## Resumen verificable

- Un AST representa la estructura de un programa mediante nodos con tipo y ubicación. ([evidencia](https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md))
- Un parser convierte el código fuente a un AST y puede configurarse para distintas sintaxis. ([evidencia](https://babeljs.io/docs/babel-parser))
- Los formatos de AST pueden diferir entre herramientas, como Babel AST y ESTree. ([evidencia](https://github.com/estree/estree))
- TypeScript expone un programa del compilador para acceder al AST de un archivo. ([evidencia](https://www.typescriptlang.org/dev/typescript-vfs/))

## Aporte editorial de VisteEsto

VisteEsto separa texto fuente, árbol y ejecución con una explicación práctica de nodos, formatos y límites de automatizar cambios.

## Qué es un árbol de sintaxis abstracta

Un árbol de sintaxis abstracta, o AST por sus siglas en inglés, es una estructura de datos que representa la organización de un programa. En vez de conservar cada espacio y signo del texto original, agrupa elementos con significado: una declaración, una llamada, un operador o un literal.

Cada nodo tiene un tipo y puede incluir información de ubicación. La especificación de Babel, por ejemplo, define nodos con un campo type y posiciones de inicio y fin. Esa estructura permite trabajar con el código como datos sin tener que buscar patrones de texto a mano.

## Cómo se construye a partir del código

Un parser recibe el código fuente y lo convierte en un AST. Para una expresión como suma(2, 3), el árbol puede separar la llamada, su nombre y sus argumentos. El formato exacto depende del lenguaje y de la herramienta; por eso un AST de Babel no siempre coincide campo por campo con otro formato como ESTree.

El parser también valida la sintaxis que entiende. Si encuentra una combinación que no pertenece a la gramática configurada, devuelve un error en lugar de inventar un nodo confiable. Elegir plugins, versión de ECMAScript o extensiones como JSX forma parte de la configuración del análisis.

## Qué se puede hacer con un AST

Una transformación recorre nodos y puede renombrar variables, cambiar una llamada, insertar una instrucción o eliminar una parte del árbol. Después, un generador vuelve a producir código. Babel usa este flujo para convertir sintaxis moderna y aplicar plugins sin depender de reemplazos frágiles de texto.

Los analizadores estáticos también consultan el AST para encontrar patrones: una regla puede detectar una función prohibida, una importación sin uso o una API que requiere migración. Como el árbol conserva la relación entre nodos, una herramienta puede distinguir un identificador usado como variable de la misma palabra dentro de un comentario.

## Cuándo conviene usarlo y qué límites tiene

Conviene usar un AST cuando necesitás transformar o revisar código de manera repetible y con contexto sintáctico. Es una buena base para linters, formateadores, migraciones automáticas, resaltado, refactors y herramientas que explican código a otros sistemas.

Un AST no prueba que el programa sea correcto ni describe por sí solo el comportamiento en ejecución. Dos programas pueden tener árboles parecidos y resultados distintos por sus datos, dependencias o efectos externos. Antes de automatizar una transformación, verificá el lenguaje, el parser, los casos límite y las pruebas que deben pasar después.

## Fuentes consultadas

- Fuente primaria: [Babel: AST specification](https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md)
- Fuente primaria: [Babel Parser documentation](https://babeljs.io/docs/babel-parser)
- Fuente primaria: [ESTree specification](https://github.com/estree/estree)
- Fuente primaria: [TypeScript VFS: compiler API and AST](https://www.typescriptlang.org/dev/typescript-vfs/)

## Imágenes y licencias

- Diagrama editorial de un árbol de sintaxis abstracta con nodos de código. Autor: VisteEsto. Licencia: [VisteEsto editorial](https://visteesto.com/terminos). [Origen](https://visteesto.com/nota/ast-arbol-sintaxis-abstracta-que-es).
- Código fuente que se convierte en nodos de un AST. Autor: VisteEsto. Licencia: [VisteEsto editorial](https://visteesto.com/terminos). [Origen](https://visteesto.com/nota/ast-arbol-sintaxis-abstracta-que-es).
- Recorrido de nodos para transformar código y volver a generarlo. Autor: VisteEsto. Licencia: [VisteEsto editorial](https://visteesto.com/terminos). [Origen](https://visteesto.com/nota/ast-arbol-sintaxis-abstracta-que-es).

## Cómo citar

Citar título, autor, fecha de publicación o actualización y la URL canónica. Las afirmaciones centrales incluyen su evidencia directa arriba. Esta versión Markdown es una representación accesible; la nota HTML canónica es la fuente editorial de referencia.
