⇦ Ramen Development_

Como crear un analizador sintáctico

Cover Image for Como crear un analizador sintáctico

Disclaimer: Para entender este articulo necesitaras conocimientos de cómo funciona un compilador, un analizador LR, reglas gramáticas e INGLÉS.

¿Qué es un analizador sintáctico y donde se usa?

Un analizador sintáctico es parte del compilador, se encarga de revisar todas las palabras y caracteres en el programa y se asegura que todo tenga un sentido y este en su lugar. Esto es realizado revisando las reglas de gramática que será cargada, y asegurándose que cumpla con cada una de las reglas que empieza.

¿Dónde empezar?

Necesitas saber que el analizador sintáctico ya es la segunda parte del compilador, esto significa que antes de esto, un analizador léxico es llamado para asegurarse de que todos los caracteres y palabras sean un token y así crear una lista de tokens para que el analizador sintáctico lo use.
También necesitaras otras dos cosas, un archivo o dos donde se encuentren las reglas de la gramática en texto plano, con todas las reglas, el número de reglas y la cantidad de ítems a desapilar, y otro que será la tabla LR que solo serán números, 0 será null, los números positivos serán desplazamientos, y los negativos serán reglas.

LR Rules 1.- Archivo de las reglas LR con su número de regla y el número de ítems a desapilar. (Ejemplo)

LR Table 2.- Archivo de tabla LR. (Ejemplo)

Algoritmo

Antes que nada, mencionamos que necesitaremos una lista de tokens(o COLA así será como nos vamos a referir a él en el algoritmo, pues siempre se va solo necesitar el primer ítem en la cola) , también necesitaremos una PILA de enteros (o cualquier clase que estas usando en caso de querer regresar un árbol sintáctico, pero en el algoritmo de este articulo NO se crea un árbol, solo se verifica que sea correcta la sintaxis) y esa pila la inicializaremos con un 0 como primer valor, las reglas leídas estarán en una lista de reglas, y la tabla LR en un arreglo bidimensional.
Ahora solo sigue este algoritmo (ESTA EN INGLES):

Syntax analyzer algorithm 3.- Algoritmo del analizador sintáctico

De esta manera, al final, solo tendrás dos caminos al acabar el algoritmo, si fue aceptado o si hubo un error, y así, tu analizador sintáctico estará listo para leer todos los programas que cumplan con las reglas que insertaste.

Más entradas

Cover Image for Como traduje mi portafolio con JavaScript y JSON

Como traduje mi portafolio con JavaScript y JSON

No quería complicarme demasiado en mi portafolio personal para tenerlo listo más rápido y probar algo nuevo. Así que se me ocurrió una solución sencilla utilizando únicamente JavaScript.

Ivan Orozco
Ivan Orozco
Cover Image for ¿Banderas para representar lenguajes?

¿Banderas para representar lenguajes?

¿Debería utilizar las banderas de los países con mayor población que habla ese idioma? ¿cuál es la mejor manera de diseñar las opciones para cambiar de idioma?

Ivan Orozco
Ivan Orozco
Cover Image for ¿Programar con emojis?

¿Programar con emojis?

Los emojis son realmente utiles en algunos casos, pueden añadir emociones a nuestros mensajes para que su verdadero significado no pase desapercibido, pero ¿deberiamos usarlos para programar?

Ivan Orozco
Ivan Orozco
Cover Image for La historia detrás de Easy Simple Job

La historia detrás de Easy Simple Job

La historia detrás de nuestro juego no es complicada, inspirado por un video narrando una historia en Reddit que cuenta la historia de un tipo que consigue un simple pero sospechoso trabajo en una oficina, y ciertas cosas perturbadoras suceden...

Ramen Development Team
Ramen Development Team
Cover Image for Queridos reclutadores de LinkedIn...

Queridos reclutadores de LinkedIn...

Es importante que los reclutadores se tomen el tiempo para revisar el perfil de un candidato antes de enviar una oferta de trabajo.

Ivan Orozco
Ivan Orozco
Cover Image for Autómata de analizador léxico

Autómata de analizador léxico

En este artículo aprenderás a realizar un autómata para de un analizador lexico.

Gustavo Padilla
Gustavo Padilla