Tutorial de parser combinators: implementación sencilla en Scheme

Los parser combinators son una técnica para construir analizadores sintácticos componiendo pequeñas funciones que reconocen unidades de texto. Este tutorial explica, de forma práctica y accesible, cómo construir una biblioteca mínima de análisis sintáctico usando Scheme, aunque los principios son ap

Un enfoque tipado y algebraico para el análisis sintáctico

Neel Krishnaswami y Jeremy Yallop, de la Universidad de Cambridge, presentan en PLDI '19 (Phoenix, 22–26 de junio de 2019) un trabajo que reconcilia dos tradiciones de la construcción de analizadores sintácticos: los generadores de parsers —basados en gramáticas BNF y autómatas, con análisis en tiem

Cómo implementar un lenguaje de consulta a medida con Python y Apache Spark

Este artículo describe, paso a paso, cómo construir un esqueleto funcional de un lenguaje de consulta propio —denominado Entity History Query Language (EHQL)— utilizando Python y la biblioteca de análisis sintáctico Lark, con Apache Spark como motor de ejecución. EHQL fue diseñado para analistas se

Cómo escribir un intérprete de Lisp en Python

Este artículo es un tutorial paso a paso para construir un intérprete de Scheme (un dialecto de Lisp) utilizando Python. El texto parte de la premisa de Steve Yegge según la cual, si no se sabe cómo funcionan los compiladores, no se entiende de verdad cómo funcionan los ordenadores, y aplica esa ide

Desaparece revista clave sobre código C

El 'Journal of C Language Translation' (JCLT) fue una publicación trimestral especializada, con un enfoque muy concreto: el desarrollo de herramientas que procesan y transforman código escrito en los lenguajes de programación C y C++. Aunque hoy en día pueda parecer un nicho muy específico, su impor

nvim-treesitter: ¿por qué no hay versiones estables?

El plugin `nvim-treesitter` para Neovim, que proporciona análisis sintáctico avanzado para mejorar la experiencia de edición, ha generado una discusión interesante sobre la ausencia de versiones estables y la dependencia de actualizaciones continuas. La pregunta central es por qué no se utilizan las

Pratt Parsing: Analizando código de forma intuitiva

Este artículo explica el 'Pratt Parsing', una técnica ingeniosa para analizar expresiones matemáticas o código, especialmente útil en compiladores. La idea central es que, tradicionalmente, las expresiones (como `a + b * c + d`) se representan en un árbol de sintaxis abstracta (AST) donde los operad

Ohm: Parsing 50 veces más rápido con WebAssembly

El toolkit de parsing Ohm, utilizado para analizar formatos de archivo personalizados y construir parsers, intérpretes y compiladores, ha anunciado una actualización significativa (v18) que aumenta la velocidad de parsing hasta 50 veces en comparación con versiones anteriores. Esta mejora sustancial

OpenUI: Parser de Rust a TypeScript, un cambio revelador

Este artículo de OpenUI relata la experiencia de migrar un parser de lenguaje de marcado (openui-lang) de Rust compilado a WebAssembly (WASM) a TypeScript, revelando lecciones valiosas sobre optimización de rendimiento y la importancia de perfilar el código antes de tomar decisiones de implementació

xmloxide: alternativa segura a libxml2 en Rust

Un equipo de desarrolladores ha creado 'xmloxide', una reimplementación en Rust de la popular biblioteca de análisis XML/HTML 'libxml2'. 'libxml2', ampliamente utilizada en el mundo del código abierto, se declaró oficialmente sin mantenimiento en diciembre de 2025 y presenta vulnerabilidades de segu

Picol: intérprete Tcl en C de solo 500 líneas

Picol es un intérprete de lenguaje similar a Tcl, escrito en C por Antirez (conocido por su trabajo en Redis), que se distingue por su tamaño increíblemente pequeño: solo 500 líneas de código. Originalmente creado en 2007, Antirez lo ha puesto a disposición en GitHub como un ejemplo de código C bien

Diseño con Tipos: Analiza, No Valides

El artículo explora el concepto de diseño impulsado por tipos (type-driven design), una metodología que el autor ha tenido dificultades para explicar de manera concisa. La clave para comprender este enfoque reside en la idea de "parse, don't validate". El autor ilustra esto a través de ejemplos en H