SlideShare una empresa de Scribd logo
PONTIFICIA UNIVERSIDAD CATÓLICA DEL
ECUADOR SEDE IBARRA
INTÉRPRETE SENCILLO UTILIZANDO IRONY Y C#
ANDRÉS DÁVILA M.
COMPILADORES
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.
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#.
PRE-REQUISITOS
 Obtención del archivo Irony.DDL
 Crear un proyecto en Visual Studio
2017
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.
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
PASOS PARA CREAR EL PRODUCTO DE COMPILADORES
 Debemos agregar la librería a nuestro proyecto
en Visual Studio en el apartado de Referencias.
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.
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.
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.
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.
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.
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);
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
RESULTADO DE LA INVESTIGACIÓN
REFERENCIAS
 Navarro, E. (07 de 08 de 2019). ICARUS. Obtenido de https://ericknavarro.io/2019/08/07/22-Interprete-
sencillo-utilizando-Irony-con-CS/

Más contenido relacionado

PDF
Informe interprete sencillo irony y c sharp
PPTX
Net reflector
PPTX
Función main()
 
PDF
Laboratorio de integración JFlex y CUP
ODP
J Flex Cup
PPTX
Depuración de un programa en c++
 
PPTX
Aclaraciones varias a códigos entregados en sesión 3
 
PPTX
Estructura de un programa en c
Informe interprete sencillo irony y c sharp
Net reflector
Función main()
 
Laboratorio de integración JFlex y CUP
J Flex Cup
Depuración de un programa en c++
 
Aclaraciones varias a códigos entregados en sesión 3
 
Estructura de un programa en c

La actualidad más candente (19)

PDF
PDF
Compilador Usando Jflex y Cup
PPTX
Presentacion de la_estructura_de_c_
PPT
PPTX
2 poo u1 2 Hola mundo
PDF
Flex y bison
PPTX
Estructura basica para_c_
PDF
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
PPTX
Cap3
PDF
Manual Instalación JLex & CUP
PPTX
Presentacion de la_estructura_de_c++
PDF
Clase2 t programas - unidades - workspaces - Delphi
PDF
PPTX
2 poo u1 1 Introduccion
PPTX
Biblioteca estándar de funciones
 
PPT
Turbo Pascal
PDF
4035426 ejercicios-resueltos-en-pascal
PDF
Compilador divisor de cantidades con Jflex y Cup
PPTX
estructuraC++
Compilador Usando Jflex y Cup
Presentacion de la_estructura_de_c_
2 poo u1 2 Hola mundo
Flex y bison
Estructura basica para_c_
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
Cap3
Manual Instalación JLex & CUP
Presentacion de la_estructura_de_c++
Clase2 t programas - unidades - workspaces - Delphi
2 poo u1 1 Introduccion
Biblioteca estándar de funciones
 
Turbo Pascal
4035426 ejercicios-resueltos-en-pascal
Compilador divisor de cantidades con Jflex y Cup
estructuraC++
Publicidad

Similar a Interprete sencillo utilizando irony y c sharp (20)

PPT
Cap4 compiladores
PDF
Automatas y compiladores analisis sintactico
PDF
Análisis sintáctico
PPTX
Cap4
PDF
Automatas y compiladores clase1
PDF
Materia unidad compiladores
PDF
Taller de compiladores
PDF
Analisis sintactico
PPTX
20150415 roslyn
PPT
Evolucion de los compiladores1
DOCX
Resumencap1 carmen vargas_jeremycamacho
PPT
Estructura de un compilador 2
PPT
Compilador
PPTX
Compiladores unidad1
DOCX
Compiladores (1) pedro vasques
DOCX
C:\documents and settings\clientea\mis documentos\compiladores
PDF
Compiladores
PDF
Manual de Compiladores Léxico y Sintáctico.pdf
PPT
Curso prog sist
DOCX
C:\fakepath\el software libre
Cap4 compiladores
Automatas y compiladores analisis sintactico
Análisis sintáctico
Cap4
Automatas y compiladores clase1
Materia unidad compiladores
Taller de compiladores
Analisis sintactico
20150415 roslyn
Evolucion de los compiladores1
Resumencap1 carmen vargas_jeremycamacho
Estructura de un compilador 2
Compilador
Compiladores unidad1
Compiladores (1) pedro vasques
C:\documents and settings\clientea\mis documentos\compiladores
Compiladores
Manual de Compiladores Léxico y Sintáctico.pdf
Curso prog sist
C:\fakepath\el software libre
Publicidad

Más de AndresDvila (20)

PDF
Manual de instalacion vegas
PDF
Segmentacion de imagenes
PDF
Practica 20 mat lab
PDF
Practica 7 mat lab
PDF
Matlab practica 6
PDF
Mat lab practica 5
PDF
Mat lab practica 14
PDF
Mat lab practica 3
PDF
Actividad dos y tres
PDF
Instalacion mat lab
PDF
Luz y espectro electromagnetico
PDF
Fundamentos de la teoria del color
PDF
Teoria del color
PDF
Expresiones regulares
PDF
Taller 26 gramatica independientes de contexto
PDF
Gramatica independiente de contexto
PDF
Gold parser
PDF
Optimizacion de codigo
PDF
Generacion codigo intermedio
PDF
Infija prefija sufija
Manual de instalacion vegas
Segmentacion de imagenes
Practica 20 mat lab
Practica 7 mat lab
Matlab practica 6
Mat lab practica 5
Mat lab practica 14
Mat lab practica 3
Actividad dos y tres
Instalacion mat lab
Luz y espectro electromagnetico
Fundamentos de la teoria del color
Teoria del color
Expresiones regulares
Taller 26 gramatica independientes de contexto
Gramatica independiente de contexto
Gold parser
Optimizacion de codigo
Generacion codigo intermedio
Infija prefija sufija

Último (20)

PDF
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
PDF
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
PPTX
Cortinas-en-Presas-de-Gravedad-Vertedoras-y-No-Vertedoras.pptx
PPTX
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
PPTX
Gestion de seguridad y salud ocupacional.pptx
PDF
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
PDF
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
DOC
informacion acerca de la crianza tecnificada de cerdos
PDF
SUBDIVISIÓN URBANA PUEDE ENFRENTAR SERVIDUMBRE DE PASO.pdf
PPT
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
PDF
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
PDF
FIJA NUEVO TEXTO DE LA ORDENANZA GENERAL DE LA LEY GENERAL DE URBANISMO Y CON...
PDF
NORMATIVA Y DESCRIPCION ALCANTARILLADO PLUVIAL.pdf
PDF
Oficio SEC 293416 Comision Investigadora
PDF
1132-2018 espectrofotometro uv visible.pdf
DOCX
Cumplimiento normativo y realidad laboral
PPT
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
PPTX
GEOLOGIA, principios , fundamentos y conceptos
PDF
S15 Protección de redes electricas 2025-1_removed.pdf
PDF
Electricidad-Estatica-Peligros-Prevencion.pdf
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
Sustitucion_del_maiz_por_harina_integral_de_zapall.pdf
Cortinas-en-Presas-de-Gravedad-Vertedoras-y-No-Vertedoras.pptx
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
Gestion de seguridad y salud ocupacional.pptx
GUÍA PARA LA IMPLEMENTACIÓN DEL PLAN PARA LA REDUCCIÓN DEL RIESGO DE DESASTRES
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
informacion acerca de la crianza tecnificada de cerdos
SUBDIVISIÓN URBANA PUEDE ENFRENTAR SERVIDUMBRE DE PASO.pdf
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
FIJA NUEVO TEXTO DE LA ORDENANZA GENERAL DE LA LEY GENERAL DE URBANISMO Y CON...
NORMATIVA Y DESCRIPCION ALCANTARILLADO PLUVIAL.pdf
Oficio SEC 293416 Comision Investigadora
1132-2018 espectrofotometro uv visible.pdf
Cumplimiento normativo y realidad laboral
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
GEOLOGIA, principios , fundamentos y conceptos
S15 Protección de redes electricas 2025-1_removed.pdf
Electricidad-Estatica-Peligros-Prevencion.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#.
  • 4. PRE-REQUISITOS  Obtención del archivo Irony.DDL  Crear un proyecto en Visual Studio 2017
  • 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
  • 15. RESULTADO DE LA INVESTIGACIÓN
  • 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/