-
Notifications
You must be signed in to change notification settings - Fork 0
lfundaro/Melon-Interpreter
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
#################################### # Proyecto 3 # # Integrantes: # # - Lorenzo Fundaro 06-39559 # # - Marion Carambula 06-39312 # #################################### ######################################## # ¿Para qué sirve cada archivo? # ######################################## Exceptions.py: contiene las excepciones que manejan errores de sintaxis, lexicográficos o de funciones desbalanceadas. lex.py: lexer de PLY lexmelon.py: donde se construye el analizador lexicográfico. lexparam.py: donde se indican los parámetros del lexer, por ejemplo, tokens y expresiones regulares para cada uno de ellos. parse_melon: programa cliente. syntree.py: implementación del árbol sintáctico. Aquí se encuentran todas las estructuras que se usan para construir el árbol sintáctico. yacc.py: parser de PLY. yaccmelon.py: donde se especifican todas las gramáticas que el parser debe usar. interpreter.py: interpretador sintactico para el lenguaje MeLon. ############################################# # Implementacion del Analizador Sintactico # ############################################# -- Match de Listas -- Para la verificacion del match entre dos listas se hizo uso de una funcion que permite recorrer la lista y ver si las cabezas hacen match y sus colas tambien. Primero se verifica que sus cabezas hagan match, si esta condicion no se cumple se retorna false de una vez. En caso de que si hagan match, procedemos a evualar los elementos que posee su cola. Para ello evaluamos que ambas colas sean una lista, de ser asi entonces llamamos recursivamente a la funcion, si no procedemos a ver las distintas combinaciones que se pueden presentar y desde ahi llamamos a la funcion match para verificar el matcheo entre los otros tipos de elementos que puede poseer la lista.. Si al final, todos los elementos de cada una de las listas hicieron match entonces retornamos una lista de tuplas de la forma (p1,p2) donde p1 es el elemento de la lista 1 que hizo match con el elemento p2 de la lista 2. -- Eval --- Para la evaluacion de los programas se creo una funcion que recibe el arbol sintactico del programa y un diccionario el cual hara el papel de tabla de simbolos donde se guardara las variables utilizadas junto con su valor asociado. Para lograr la evaluacion se hicieron casos segun el tipo que posee el nodo, para cada uno de ellos hay una forma de evaluacion diferente, los casos bases para esta funcion son los nodos enteros, las variables y las constantes. Basicamente lo que hace es ir recorriendo el arbol sintactico hasta llegar a los casos bases y operarlos segun el caso en el que nos encontremos.
About
Melon Language Interpreter. A college project for the Compilers Course
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published