Git Product home page Git Product logo

melon-interpreter's Introduction

####################################
# 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.
 

melon-interpreter's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.