Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

nitra00

Jetbrains ha abierto el código fuente de sus herramientas de bajo nivel, llamadas genéricamente Nitra, la cual comprime un lenguaje para describir gramáticas y construir herramientas para compilarlas. En un mensaje del blog, donde se introducía Nitra, en noviembre del 2013, Hadi Hariri explicó que no se trataba de otro parser (al mejor estilo LEX y YACC) y como ejemplo pone la capacidad para extender C# usando un operador nuevo .?, de la siguiente manera:

nitracodecopEn ese tiempo, Nitra se había desarrollado por espacio de un año. Ahora el equipo, lidereado por Vlad Chistyakov, ha decido que, aunque sigue siendo un “trabajo aún no concluido”, da un “conjunto mínimo de características víables, así como una buena base arquitectónica para futuros desarrollos” y su fuente ya se encuentra en GitHub, bajo la licencia BSD simplificada.

Su descripción en GitHub dice: “Puede usar Nitra para la creación o para extender un lenguaje de propósito general o un lenguaje en un dominio específico. En este momento, Nitra le permite crear parser que se expanden dinámicamente. En el futuro, Nitra permitirá crear un soporte completo a lenguajes de programación: compiladores, soporte a IDE, etcétera”.

En el anuncio en el blog, Matt Ellis indica: “Nitra es un lenguaje para describir gramáticas y los árboles sintáctivos abstractos para representarlos y también una herramienta para construir gramáticas para ser analizadas lexicográficamente, y generar las clases requeridas para representar los árboles mencionados.  También es un conjunto de servicios para los lenguajes que usan una gramática para dar énfasis visual a las palabras (cambiar de color las palabras reservadas, por ejemplo), y el aparejamiento de los paréntesis (que siempre haya parejas de los mismos)”.

Crear parsers y árboles abstractos es algo que Jetbrains sabe hacer muy bien, pero como explica Ellis, quitando las partes complicadas, Nitra le permitirá a la compañía: “soportar más lenguajes y más rápidamente, y enfocarse en los niveles altos de la herramienta del lenguaje basada en el stack, como en el análisis y en el corregir errores rápidamente”.  Advierte además que si usted quiere usar Nitra, “espere ensuciarse las manos”. La realidad es que esta es una herramienta muy especializada.

Referencias:

Nitra
Nitra en GitHub
Una introducción a Nitra
i-programmer

Desde la Red…
Comentarios