SlideShare una empresa de Scribd logo
1 de 16
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

La actualidad más candente

Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cupditopo
 
Presentacion de la_estructura_de_c_
Presentacion de la_estructura_de_c_Presentacion de la_estructura_de_c_
Presentacion de la_estructura_de_c_laura cortez
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_Jesus22barrera
 
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEXProyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEXIvan Luis Jimenez
 
Cap3
Cap3Cap3
Cap3CJAO
 
Manual Instalación JLex & CUP
Manual Instalación JLex & CUPManual Instalación JLex & CUP
Manual Instalación JLex & CUPrubeniii
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++MartinCetis109
 
Clase2 t programas - unidades - workspaces - Delphi
Clase2 t   programas - unidades - workspaces - DelphiClase2 t   programas - unidades - workspaces - Delphi
Clase2 t programas - unidades - workspaces - DelphiJulio Antonio Huaman Chuque
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funcionesUVM
 
4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascal4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascalLuis Fernando Jimenez
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupSoraya Lara
 

La actualidad más candente (19)

Jlex Cup
Jlex CupJlex Cup
Jlex Cup
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cup
 
Presentacion de la_estructura_de_c_
Presentacion de la_estructura_de_c_Presentacion de la_estructura_de_c_
Presentacion de la_estructura_de_c_
 
Javadoc
JavadocJavadoc
Javadoc
 
2 poo u1 2 Hola mundo
2 poo u1 2 Hola mundo2 poo u1 2 Hola mundo
2 poo u1 2 Hola mundo
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEXProyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
 
Cap3
Cap3Cap3
Cap3
 
Manual Instalación JLex & CUP
Manual Instalación JLex & CUPManual Instalación JLex & CUP
Manual Instalación JLex & CUP
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++
 
Clase2 t programas - unidades - workspaces - Delphi
Clase2 t   programas - unidades - workspaces - DelphiClase2 t   programas - unidades - workspaces - Delphi
Clase2 t programas - unidades - workspaces - Delphi
 
Introducción a Turbo Pascal
Introducción a Turbo PascalIntroducción a Turbo Pascal
Introducción a Turbo Pascal
 
2 poo u1 1 Introduccion
2 poo u1 1 Introduccion2 poo u1 1 Introduccion
2 poo u1 1 Introduccion
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funciones
 
Turbo Pascal
Turbo PascalTurbo Pascal
Turbo Pascal
 
4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascal4035426 ejercicios-resueltos-en-pascal
4035426 ejercicios-resueltos-en-pascal
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y Cup
 
estructuraC++
estructuraC++estructuraC++
estructuraC++
 

Similar a Interprete sencillo utilizando irony y c sharp

Primera Clase
Primera ClasePrimera Clase
Primera Clasemandres
 
Visual Basic
Visual BasicVisual Basic
Visual BasicIrismar_6
 
Desarrollo de aplicaciones , programacion en dev ++
Desarrollo de aplicaciones , programacion  en   dev ++Desarrollo de aplicaciones , programacion  en   dev ++
Desarrollo de aplicaciones , programacion en dev ++ernestre
 
Desarrollo de aplicaciones , programacion en dev ++
Desarrollo de aplicaciones , programacion  en   dev ++Desarrollo de aplicaciones , programacion  en   dev ++
Desarrollo de aplicaciones , programacion en dev ++ernestre
 
Clase 2 GuiaPractica.pdf
Clase 2 GuiaPractica.pdfClase 2 GuiaPractica.pdf
Clase 2 GuiaPractica.pdfodryemeliGomez
 
Herramientas case[procesamiento de lenguaje analisis de p
Herramientas case[procesamiento de lenguaje   analisis de pHerramientas case[procesamiento de lenguaje   analisis de p
Herramientas case[procesamiento de lenguaje analisis de pManuel Villalta
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostreamTensor
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2perlallamas
 
Bibliotecas de C
Bibliotecas de CBibliotecas de C
Bibliotecas de CLorenaCMtz
 
Interprete utilizando gold parser
Interprete utilizando gold parserInterprete utilizando gold parser
Interprete utilizando gold parserJOSSELINEMARIBEL
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++juliancetis109
 
Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++juliancetis109
 
Tutorial de visual_c_
Tutorial de visual_c_Tutorial de visual_c_
Tutorial de visual_c_oscar020615
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++oscar020615
 
Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Raul Hernandez Mayo
 

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

Primera Clase
Primera ClasePrimera Clase
Primera Clase
 
Manual c# 1 o@sis 2017
Manual c# 1 o@sis 2017Manual c# 1 o@sis 2017
Manual c# 1 o@sis 2017
 
Visual Basic
Visual BasicVisual Basic
Visual Basic
 
Desarrollo de aplicaciones , programacion en dev ++
Desarrollo de aplicaciones , programacion  en   dev ++Desarrollo de aplicaciones , programacion  en   dev ++
Desarrollo de aplicaciones , programacion en dev ++
 
Desarrollo de aplicaciones , programacion en dev ++
Desarrollo de aplicaciones , programacion  en   dev ++Desarrollo de aplicaciones , programacion  en   dev ++
Desarrollo de aplicaciones , programacion en dev ++
 
Clase 2 GuiaPractica.pdf
Clase 2 GuiaPractica.pdfClase 2 GuiaPractica.pdf
Clase 2 GuiaPractica.pdf
 
Herramientas case[procesamiento de lenguaje analisis de p
Herramientas case[procesamiento de lenguaje   analisis de pHerramientas case[procesamiento de lenguaje   analisis de p
Herramientas case[procesamiento de lenguaje analisis de p
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Bibliotecas de c_
Bibliotecas de c_Bibliotecas de c_
Bibliotecas de c_
 
Bibliotecas de C
Bibliotecas de CBibliotecas de C
Bibliotecas de C
 
Interprete utilizando gold parser
Interprete utilizando gold parserInterprete utilizando gold parser
Interprete utilizando gold parser
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++
 
Tutorial de visual_c_
Tutorial de visual_c_Tutorial de visual_c_
Tutorial de visual_c_
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
Practica 9
Practica 9Practica 9
Practica 9
 
Practica 9
Practica 9 Practica 9
Practica 9
 
Practica 9
Practica 9Practica 9
Practica 9
 
Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison Procedimiento Para Utilizar Flex Y Bison
Procedimiento Para Utilizar Flex Y Bison
 

Más de AndresDvila

Manual de instalacion vegas
Manual de instalacion vegasManual de instalacion vegas
Manual de instalacion vegasAndresDvila
 
Segmentacion de imagenes
Segmentacion de imagenesSegmentacion de imagenes
Segmentacion de imagenesAndresDvila
 
Practica 20 mat lab
Practica 20 mat labPractica 20 mat lab
Practica 20 mat labAndresDvila
 
Practica 7 mat lab
Practica 7 mat labPractica 7 mat lab
Practica 7 mat labAndresDvila
 
Matlab practica 6
Matlab practica 6Matlab practica 6
Matlab practica 6AndresDvila
 
Mat lab practica 5
Mat lab practica 5Mat lab practica 5
Mat lab practica 5AndresDvila
 
Mat lab practica 14
Mat lab practica 14Mat lab practica 14
Mat lab practica 14AndresDvila
 
Mat lab practica 3
Mat lab practica 3Mat lab practica 3
Mat lab practica 3AndresDvila
 
Actividad dos y tres
Actividad dos y tresActividad dos y tres
Actividad dos y tresAndresDvila
 
Instalacion mat lab
Instalacion mat labInstalacion mat lab
Instalacion mat labAndresDvila
 
Luz y espectro electromagnetico
Luz y espectro electromagneticoLuz y espectro electromagnetico
Luz y espectro electromagneticoAndresDvila
 
Fundamentos de la teoria del color
Fundamentos de la teoria del colorFundamentos de la teoria del color
Fundamentos de la teoria del colorAndresDvila
 
Teoria del color
Teoria del colorTeoria del color
Teoria del colorAndresDvila
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regularesAndresDvila
 
Taller 26 gramatica independientes de contexto
Taller 26 gramatica independientes de contextoTaller 26 gramatica independientes de contexto
Taller 26 gramatica independientes de contextoAndresDvila
 
Gramatica independiente de contexto
Gramatica independiente de contextoGramatica independiente de contexto
Gramatica independiente de contextoAndresDvila
 
Optimizacion de codigo
Optimizacion de codigoOptimizacion de codigo
Optimizacion de codigoAndresDvila
 
Generacion codigo intermedio
Generacion codigo intermedioGeneracion codigo intermedio
Generacion codigo intermedioAndresDvila
 
Infija prefija sufija
Infija prefija sufijaInfija prefija sufija
Infija prefija sufijaAndresDvila
 

Más de AndresDvila (20)

Manual de instalacion vegas
Manual de instalacion vegasManual de instalacion vegas
Manual de instalacion vegas
 
Segmentacion de imagenes
Segmentacion de imagenesSegmentacion de imagenes
Segmentacion de imagenes
 
Practica 20 mat lab
Practica 20 mat labPractica 20 mat lab
Practica 20 mat lab
 
Practica 7 mat lab
Practica 7 mat labPractica 7 mat lab
Practica 7 mat lab
 
Matlab practica 6
Matlab practica 6Matlab practica 6
Matlab practica 6
 
Mat lab practica 5
Mat lab practica 5Mat lab practica 5
Mat lab practica 5
 
Mat lab practica 14
Mat lab practica 14Mat lab practica 14
Mat lab practica 14
 
Mat lab practica 3
Mat lab practica 3Mat lab practica 3
Mat lab practica 3
 
Actividad dos y tres
Actividad dos y tresActividad dos y tres
Actividad dos y tres
 
Instalacion mat lab
Instalacion mat labInstalacion mat lab
Instalacion mat lab
 
Luz y espectro electromagnetico
Luz y espectro electromagneticoLuz y espectro electromagnetico
Luz y espectro electromagnetico
 
Fundamentos de la teoria del color
Fundamentos de la teoria del colorFundamentos de la teoria del color
Fundamentos de la teoria del color
 
Teoria del color
Teoria del colorTeoria del color
Teoria del color
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Taller 26 gramatica independientes de contexto
Taller 26 gramatica independientes de contextoTaller 26 gramatica independientes de contexto
Taller 26 gramatica independientes de contexto
 
Gramatica independiente de contexto
Gramatica independiente de contextoGramatica independiente de contexto
Gramatica independiente de contexto
 
Gold parser
Gold parserGold parser
Gold parser
 
Optimizacion de codigo
Optimizacion de codigoOptimizacion de codigo
Optimizacion de codigo
 
Generacion codigo intermedio
Generacion codigo intermedioGeneracion codigo intermedio
Generacion codigo intermedio
 
Infija prefija sufija
Infija prefija sufijaInfija prefija sufija
Infija prefija sufija
 

Último

Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENSLuisLobatoingaruca
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTGestorManpower
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestajeffsalazarpuente
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 

Último (20)

Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SST
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuesta
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
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#.
  • 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/