0% 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.

Cargado por

andres zumarraga
Derechos de autor
© © All Rights Reserved
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% 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.

Cargado por

andres zumarraga
Derechos de autor
© © All Rights Reserved
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:


https://www.ericknavarro.io/2020/03/15/26-Interprete-sencillo-utilizando-PLY/

También podría gustarte