clases de dinamica ejercicios preuniversitarios.pdf
Interprete sencillo utilizando irony y c sharp
1. PONTIFICIA UNIVERSIDAD CATÓLICA DEL
ECUADOR SEDE IBARRA
INTÉRPRETE SENCILLO UTILIZANDO IRONY Y C#
ANDRÉS DÁVILA M.
COMPILADORES
2. DESCRIPCIÓN DEL PROYECTO DE COMPILADORES
Se desarrolla un intérprete sencillo que permite ejecutar un archivo de entrada que contiene sentencias
tales como declaración de variables, sentencias de control, impresiones en consola, etc. El lenguaje de
programación fue diseñado especialmente para este ejemplo.
3. TECNOLOGÍAS UTILIZADAS EN EL PROYECTO DE
Irony : Generador de analizadores léxicos y sintácticos que retorna un AST (Abstract Syntax Tree).
Visual Studio 2017: Entorno de desarrollo integrado utilizado para programar en C#.
Windows 10 : Sistema Operativo.
Irony.dll : DLL que permite la integración de Irony con C#.
5. CONCEPTOS BÁSICOS DE IRONY
ParseTree: AST devuelto por Irony que será posteriormente recorrido y analizado.
ParseTreeNode: Cada uno de los nodos del ParseTree, el atributo mas importante de este nodo es:
ChildNodes: Atributo de cada ParseTreeNode, este atributo es de tipo Array y contiene todas las cualidades
de una lista, tales como Count, ElementAt, etc. Si esta lista esta vacía significa que el nodo es un nodo hoja,
caso contrario es un subárbol.
6. PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
Descargar el repositorio completo de
Irony desde GitHub.
El proyecto de Irony anteriormente mencionado
es un proyecto de C#, el cual contiene la
aplicación de Irony, sin embargo, a nosotros
únicamente nos interesa las librerías que este
proyecto genera
7. PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
Debemos agregar la librería a nuestro proyecto
en Visual Studio en el apartado de Referencias.
8. PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
El código de nuestro proyecto está organizado en dos paquetes:
analizador: que contiene los archivos de Irony.
arbol: que contiene todas las clases que forman parte del AST, que se utiliza como estructura
primaria en la aplicación.
9. PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
Agregamos la clase Gramatica.cs Contenido de la clase Gramatica.cs
ER: Expresiones regulares de los tokens que nuestra
gramática reconocerá.
Terminales: Conjunto de terminales que serán utilizados
en nuestra gramática, que no fueron aceptados por
ninguna de las expresiones regulares definidas
anteriormente.
No terminales: Conjunto de no terminales que serán
utilizados en nuestra gramática.
Gramática: Región donde se define la gramática.
Preferencia: Configuraciones especiales necesarias para el
uso de Irony.
10. PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
Agregamos clase Sintactico.cs Contenido clase Sintactico.cs
El método analizar para cargar el árbol y disparar el
recorrido de dicho árbol a través de una llamada al
método instrucciones a la que se le manda el nodo raíz
del árbol.
El no terminal “instrucciones”, contaba con 2 posibles
producciones, una en la cual tenia dos hijos y en la otra
solamente uno, con esta información y usando la
propiedad ChildNodes, hacemos el recorrido de esa
producción, haciendo llamadas a otras funciones según
el no terminal encontrado.
11. PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
Contenido clase Sintactico.cs
Para la producción de “expresion”, debemos plantear condiciones para determinar qué producción se
está reconociendo, estas condiciones pueden basarse en la cantidad de hijos de la producción.
12. PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
Árbol de análisis abstracto AST
Un árbol de sintaxis abstracta (AST) es una representación simplificada de la estructura sintáctica del
código fuente. A nivel de programación un AST es una estructura de datos que se genera durante el
proceso de análisis sintáctico.
13. PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
Interpretación del archivo de entrada
Esta interpretación se ejecuta dentro del método Main de la clase “Program” que se creo
automáticamente en nuestro proyecto.
En esta clase se importa la referencia a la carpeta analizador para poder usar la clase Sintactico recién
creada:
Y en el método Main encontramos lo siguiente:
string text = System.IO.File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"....input", "entrada.txt"));
Sintactico sintac = new Sintactico();
sintac.analizar(text);
14. PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
Interpretación del archivo de entrada
Cargar el contenido del archivo “entrada.txt” que
debe ser creado dentro de la carpeta /input que
también debemos crear dentro de nuestro
proyecto.
Crear el analizador sintáctico a utilizar
Analizar el texto del archivo de entrada
16. REFERENCIAS
Navarro, E. (07 de 08 de 2019). ICARUS. Obtenido de https://ericknavarro.io/2019/08/07/22-Interprete-
sencillo-utilizando-Irony-con-CS/