SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
NOMBRE: Andrés Dávila M.
FECHA: 23-07-2020
MATERIA: Compiladores
Intérprete sencillo utilizando Irony y C#
• 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 compilación
✓ 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
Debemos agregar la librería a nuestro proyecto en Visual Studio en el apartado
de Referencias.
El código de nuestro proyecto está organizado en dos paquetes:
o analizador: que contiene los archivos de Irony.
o arbol: que contiene todas las clases que forman parte del AST, que se
utiliza como estructura primaria en la aplicación.
Agregamos 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.
Agregamos 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.
➢ 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.
Á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.
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.BaseDirect
ory, @"....input", "entrada.txt"));
Sintactico sintac = new Sintactico();
sintac.analizar(text);
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.
• Cuál es el producto que se obtiene con esta investigación
• Fuentes consultadas
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 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
 
Función main()
Función main()Función main()
Función main()UVM
 
Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rogramaivanjvic
 
Tipos de datos entrada y salida
Tipos de datos entrada y salidaTipos de datos entrada y salida
Tipos de datos entrada y salidaBrahyan Marquez
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuarioUVM
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo Ctacubomx
 
ENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVAENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVAGabriel Suarez
 
Generacion codigomaquina
Generacion codigomaquinaGeneracion codigomaquina
Generacion codigomaquinatre_na_gil
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funcionesUVM
 
Usando flex en Windows
Usando flex en WindowsUsando flex en Windows
Usando flex en WindowsMariano Rico
 
Código intermedio
Código intermedioCódigo intermedio
Código intermedioyaya
 
Generador de codigo lenguajes de programacion
Generador de codigo lenguajes de programacionGenerador de codigo lenguajes de programacion
Generador de codigo lenguajes de programacionbulnez
 
ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++GabrielFVilla15
 

La actualidad más candente (19)

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
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Función main()
Función main()Función main()
Función main()
 
Jlex Cup
Jlex CupJlex Cup
Jlex Cup
 
Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rograma
 
Tipos de datos entrada y salida
Tipos de datos entrada y salidaTipos de datos entrada y salida
Tipos de datos entrada y salida
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo C
 
ENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVAENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVA
 
Generacion codigomaquina
Generacion codigomaquinaGeneracion codigomaquina
Generacion codigomaquina
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funciones
 
Usando flex en Windows
Usando flex en WindowsUsando flex en Windows
Usando flex en Windows
 
ellenguajedec++
ellenguajedec++ellenguajedec++
ellenguajedec++
 
Código intermedio
Código intermedioCódigo intermedio
Código intermedio
 
Generador de codigo lenguajes de programacion
Generador de codigo lenguajes de programacionGenerador de codigo lenguajes de programacion
Generador de codigo lenguajes de programacion
 
Estructura
EstructuraEstructura
Estructura
 
Shell script en linux
Shell script en linuxShell script en linux
Shell script en linux
 
ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++
 

Similar a Informe interprete sencillo irony y c sharp

Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostreamTensor
 
Primera Clase
Primera ClasePrimera Clase
Primera Clasemandres
 
Working with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdfWorking with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdfeudilac1
 
Visual Basic
Visual BasicVisual Basic
Visual BasicIrismar_6
 
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
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintacticoAndresDvila
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosDoris Aguagallo
 
Bibliotecas de C
Bibliotecas de CBibliotecas de C
Bibliotecas de CLorenaCMtz
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintacticoAndres Pozo
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintácticoSantiago Andrade
 
Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++ValeriaBerrones
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C SharpEdgardo Martinez
 

Similar a Informe interprete sencillo irony y c sharp (20)

Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
Primera Clase
Primera ClasePrimera Clase
Primera Clase
 
Working with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdfWorking with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdf
 
Visual Basic
Visual BasicVisual Basic
Visual Basic
 
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++
 
Manual c# 1 o@sis 2017
Manual c# 1 o@sis 2017Manual c# 1 o@sis 2017
Manual c# 1 o@sis 2017
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetos
 
Bibliotecas de c_
Bibliotecas de c_Bibliotecas de c_
Bibliotecas de c_
 
Bibliotecas de C
Bibliotecas de CBibliotecas de C
Bibliotecas de C
 
Taller de compiladores
Taller de compiladoresTaller de compiladores
Taller de compiladores
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
ARCHIVOS
ARCHIVOS ARCHIVOS
ARCHIVOS
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++Presentacion de la Estructura basica para_c++
Presentacion de la Estructura basica para_c++
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 

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

ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
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
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfDiegoMadrigal21
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
Rendimiento-de-Maquinaria y precios unitarios para la construcción de una ma...
Rendimiento-de-Maquinaria y precios unitarios  para la construcción de una ma...Rendimiento-de-Maquinaria y precios unitarios  para la construcción de una ma...
Rendimiento-de-Maquinaria y precios unitarios para la construcción de una ma...RichardRivas28
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónXimenaFallaLecca1
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
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
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfannavarrom
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfalexquispenieto2
 
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
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 

Último (20)

ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.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
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdf
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
Rendimiento-de-Maquinaria y precios unitarios para la construcción de una ma...
Rendimiento-de-Maquinaria y precios unitarios  para la construcción de una ma...Rendimiento-de-Maquinaria y precios unitarios  para la construcción de una ma...
Rendimiento-de-Maquinaria y precios unitarios para la construcción de una ma...
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcción
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
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
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdf
 
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
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 

Informe interprete sencillo irony y c sharp

  • 1. NOMBRE: Andrés Dávila M. FECHA: 23-07-2020 MATERIA: Compiladores Intérprete sencillo utilizando Irony y C# • 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 compilación ✓ 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.
  • 2. 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 Debemos agregar la librería a nuestro proyecto en Visual Studio en el apartado de Referencias. El código de nuestro proyecto está organizado en dos paquetes: o analizador: que contiene los archivos de Irony. o arbol: que contiene todas las clases que forman parte del AST, que se utiliza como estructura primaria en la aplicación. Agregamos 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.
  • 3. Agregamos 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. ➢ 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. Á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. 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.BaseDirect ory, @"....input", "entrada.txt")); Sintactico sintac = new Sintactico(); sintac.analizar(text);
  • 4. 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. • Cuál es el producto que se obtiene con esta investigación
  • 5. • Fuentes consultadas Navarro, E. (07 de 08 de 2019). ICARUS. Obtenido de https://ericknavarro.io/2019/08/07/22- Interprete-sencillo-utilizando-Irony-con-CS/