0 calificaciones0% encontró este documento útil (0 votos)
350 vistas9 páginas
Intérprete Sencillo Utilizando PLY Con Python 3
Este documento describe un proyecto para desarrollar un intérprete que recibe como entrada un archivo de texto con sentencias de un lenguaje de programación diseñado. Primero se realiza un análisis léxico y sintáctico para generar un árbol de sintaxis abstracta que se usa para ejecutar las sentencias. Explica las tecnologías usadas como PLY y Python, y los pasos para crear el compilador como definir tokens, gramática, clases de instrucciones y expresiones, tabla de símbolos e intérprete.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0 calificaciones0% encontró este documento útil (0 votos)
350 vistas9 páginas
Intérprete Sencillo Utilizando PLY Con Python 3
Este documento describe un proyecto para desarrollar un intérprete que recibe como entrada un archivo de texto con sentencias de un lenguaje de programación diseñado. Primero se realiza un análisis léxico y sintáctico para generar un árbol de sintaxis abstracta que se usa para ejecutar las sentencias. Explica las tecnologías usadas como PLY y Python, y los pasos para crear el compilador como definir tokens, gramática, clases de instrucciones y expresiones, tabla de símbolos e intérprete.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9
Nombre: Andrés Zumárraga
Curso: 08-07-2021
Descripción del Proyecto
Desarrollo de un interprete que recibe como entrada un archivo de texto que contiene varias sentencias de un lenguaje de programación diseñado especialmente para esta aplicación. Primero se hace un análisis léxico y sintáctico de dicha entrada, durante el análisis sintáctico se carga en memoria un Árbol de Sintaxis Abstracta que se utiliza posteriormente para ejecutar sentencias. Tecnologías usadas en el proyecto de compilación • PLY: Generador de analizadores léxicos y sintácticos • Python 3: Es un lenguaje de programación interpretado de alto nivel • Visual Studio Code: Es un editor de código ligero pero poderoso. Existen complementos para trabajar con este lenguaje Descripción de la herramienta para crear el producto de compiladores • PLY es una implementación en Python de lex y yacc • Son herramientas populares para la construcción de compiladores • La principal tarea de un analizador lexico es leer los caracteres de entra del programa fuente, agruparlos en lexemas y producir como salidad una secuencia de tokens. • En PLY se define los patrones de los diferentes tokens que se desean conocer. • Se realiza mediante expresiones regulares. • Las producciones y acciones para formar la gramática se definen a través de funciones. Pre-requisitos • Python 3 • PLY • Visual Code o cualquier IDE que sea de nuestro agrado. Pasos para crear el producto de compiladores • Instalamos PLY descargando desde su página oficial • Creamos una carpeta donde realizaremos nuestro proyecto • Abrimos la carpeta creada en Visual Code • Creamos un archivo de entrada llamado entrada.txt en el cual se muestran todas las funciones del lenguaje diseñado. 1 //Se imprime el encabezado 2 imprimir("Tablas de" & " multiplicar"); 3 4 //Se declara la variable a, de tipo numero 5 numero a; 6 //Se asigna a la variable a el valor 0 7 a=0; 8 //Se declara la variable c, de tipo numero 9 numero c; 10 //Se asigna a la variable c el valor 0 11 c=1; 12 //Se imprime un separador 13 imprimir("----------------"); 14 /** 15 * Se imprimen las tablas del 1 al 5 y 16 * para cada tabla, se imprimen los resultados 17 * desde el uno hasta el 5, esto se hace con 18 * dos ciclos while anidados. 19 **/ 20 mientras(a<4+c){ 21 a=a+1; 22 numero b; 23 b=0; 24 mientras(b<4+c){ 25 b=b+1; 26 imprimir(a & " * " & b & " = " & a * b); 27 } 28 imprimir("----------------"); 29 } 30 31 //Se asigna a la variable a el valor de 11 32 a=11; 33 /** 34 * La variable b ya había sido declarada pero 35 * dentro del ámbito del primer ciclo while, 36 * entonces no existe en este ámbito por lo que 37 * debe declararse. 38 **/ 39 numero b; 40 //Se asigna valor de 12 a b y valor de 13 a c 41 b=12; 42 c=13; 43 /** 44 * Se evalua si el valor de la variable a es 45 * mayor que 10, si el b es mayor que 11 y si 46 * el de c es mayor que 12. 47 **/ 48 If(a>10){ 49 imprimir("a es mayor que 10."); 50 if(b>11){ 51 imprimir("a es mayor que 10 y b es mayor que 52 11."); 53 if(c>12){ 54 imprimir("a es mayor que 10, b es mayor 55 que 11 y c es mayor que 12."); 56 } 57 } 58 }else{ imprimir("a es menor o igual que 10."); }
• Creamos un archivo en Visual Code dentro de nuestra carpeta creada que
se va a llamar gramática.py donde escribiremos el compilador. • En el analizador léxico definimos los patrones para los tokens que deseamos reconocer, mediante el uso de expresiones regulares para identificar números, cadenas y comentarios haciendo uso del módulo re de Python. • Para la creación del AST haremos uso de polimorfismo, las clases que usaremos para construir nuestro AST, las definiremos en un archivo llamada instrucciones.py • De igual manera que hicimos con el archivo llamado instrucciones.py vamos a crear un archivo llamado expresiones.py, en el cual definiremos 3 clases abstractas los cuales representan los 3 tipos de expresiones soportadas por nuestro lenguaje: Expresiones Aritméticas, Expresiones con Cadenas y Expresiones Lógicas. • Para construir el AST durante nuestro análisis sintáctico importamos nuestra clase de instrucciones y expresiones. Esto también incluye nuestros enum para las constantes, esto lo realizaremos en un archivo llamado gramática.py
• Una vez hayamos reconocido toda la entrada, construimos un arreglo
con cada uno de los nodos. Este será nuestro AST • Creamos la tabla de símbolos la cual nos permitirá el almacenamiento y recuperación de los valores de las variables. Para su uso hacemos la implementación de la clase la cual la realizamos en un archivo llamado ts.py • La definición del Interprete la creamos en un archivo llamado principal.py. • Resultado
Cual es el producto de la siguiente investigación
Realizar un interprete mediante el uso de Análisis Léxico y Sintáctico el cual resuelva expresiones matemáticas.
Bibliografía
Navarro, E. (09 de 06 de 2020). ericknavarro.io. Obtenido de ericknavarro.io: