{"schema_version":"1.0","type":"Article","canonical_url":"https://visteesto.com/nota/ast-arbol-sintaxis-abstracta-que-es","machine_urls":{"markdown":"https://visteesto.com/ai/article/ast-arbol-sintaxis-abstracta-que-es/markdown","json":"https://visteesto.com/ai/article/ast-arbol-sintaxis-abstracta-que-es/json"},"publisher":{"name":"VisteEsto","url":"https://visteesto.com","editor":"Martín Rodríguez","editorial_policy":"https://visteesto.com/politica-editorial","corrections_policy":"https://visteesto.com/correcciones"},"headline":"AST o árbol de sintaxis abstracta: qué es y para qué sirve","description":"Qué es un AST, cómo lo construye un parser y por qué se usa en linters, compiladores, formateadores y transformaciones automáticas de código.","dek":"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.","language":"es","section":"Tecnología","topic":"herramientas-programacion-ast","tags":["Programación","JavaScript","Desarrollo","Herramientas","Tecnología"],"author":{"name":"Martin Rodriguez","profile_url":"https://visteesto.com/autor/martin-rodriguez"},"date_published":"2026-10-02T21:00:00.000Z","date_modified":"2026-10-02T21:00:00.000Z","search_intent":"service","content_format":"service","primary_query":"qué es un AST árbol de sintaxis abstracta","intended_audience":"Personas que programan y quieren entender cómo funcionan parsers, linters, formateadores y transformaciones de código.","original_contribution":"VisteEsto separa texto fuente, árbol y ejecución con una explicación práctica de nodos, formatos y límites de automatizar cambios.","key_facts":[{"statement":"Un AST representa la estructura de un programa mediante nodos con tipo y ubicación.","evidence_url":"https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md"},{"statement":"Un parser convierte el código fuente a un AST y puede configurarse para distintas sintaxis.","evidence_url":"https://babeljs.io/docs/babel-parser"},{"statement":"Los formatos de AST pueden diferir entre herramientas, como Babel AST y ESTree.","evidence_url":"https://github.com/estree/estree"},{"statement":"TypeScript expone un programa del compilador para acceder al AST de un archivo.","evidence_url":"https://www.typescriptlang.org/dev/typescript-vfs/"}],"sections":[{"heading":"Qué es un árbol de sintaxis abstracta","paragraphs":["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."]},{"heading":"Cómo se construye a partir del código","paragraphs":["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."]},{"heading":"Qué se puede hacer con un AST","paragraphs":["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."]},{"heading":"Cuándo conviene usarlo y qué límites tiene","paragraphs":["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."]}],"sources":[{"name":"Babel: AST specification","url":"https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md","kind":"primary"},{"name":"Babel Parser documentation","url":"https://babeljs.io/docs/babel-parser","kind":"primary"},{"name":"ESTree specification","url":"https://github.com/estree/estree","kind":"primary"},{"name":"TypeScript VFS: compiler API and AST","url":"https://www.typescriptlang.org/dev/typescript-vfs/","kind":"primary"}],"primary_source_gap":null,"images":[{"url":"https://visteesto.com/media/ast-arbol-sintaxis-abstracta-que-es/cover.jpg","alt":"Diagrama editorial de un árbol de sintaxis abstracta con nodos de código","width":1200,"height":675,"creator":"VisteEsto","license":"VisteEsto editorial","licenseUrl":"https://visteesto.com/terminos","sourceUrl":"https://visteesto.com/nota/ast-arbol-sintaxis-abstracta-que-es","caption":"Ilustración editorial: un parser organiza el código en nodos con significado."},{"url":"https://visteesto.com/media/ast-arbol-sintaxis-abstracta-que-es/inline-1.jpg","alt":"Código fuente que se convierte en nodos de un AST","width":1200,"height":800,"creator":"VisteEsto","license":"VisteEsto editorial","licenseUrl":"https://visteesto.com/terminos","sourceUrl":"https://visteesto.com/nota/ast-arbol-sintaxis-abstracta-que-es","caption":"Ilustración editorial: el parser separa llamada, nombre y argumentos."},{"url":"https://visteesto.com/media/ast-arbol-sintaxis-abstracta-que-es/inline-2.jpg","alt":"Recorrido de nodos para transformar código y volver a generarlo","width":1200,"height":800,"creator":"VisteEsto","license":"VisteEsto editorial","licenseUrl":"https://visteesto.com/terminos","sourceUrl":"https://visteesto.com/nota/ast-arbol-sintaxis-abstracta-que-es","caption":"Ilustración editorial: analizar y transformar nodos requiere validar el resultado."}],"videos":[],"update_log":[{"date":"2026-10-02T21:00:00.000Z","note":"Publicación inicial basada en la especificación de AST de Babel, su parser y el formato ESTree."}],"citation_guidance":{"preferred_url":"https://visteesto.com/nota/ast-arbol-sintaxis-abstracta-que-es","include":["headline","author","date_published_or_modified","preferred_url"]}}