University Project 馃帗
Alejandro Tejada 17584
Construccion de compiladores
Universidad del Valle de Guatemala
22/11/2021
Este proyecto es el tercer de tres de construccion de un compilador. Esta fase es la generaci贸n de c贸digo de ARM. llegamos al final de la generacion, donde tomamos el codigo intermedio y mediante manejo de registros, lo mandamos al STACK. Algunos puntos vistos en este proyecto
- Creaci贸n de funci贸n getREG para obtener registros
- creacion de codigo ARM para expresiones
- creacion de encabezado, etc
- Python 3.8.0 64bits
- Compiladores principios, t茅cnicas y herramientas, 2da Edici贸n - Alfred V. Aho
- VS Code
- Windows Terminal
- A lot of Coffe (more Coffe than last time, A LOT) (enought coffe for a life V4, version Intermediate Code) (enought coffe for a reencarnation V1122323, version generation ARM Code)
- Python 3.8.0
- Una versi贸n de Python de la versi贸n Python 3.6.0 64bits o mayor
- Pprint
- Una librer铆a de python para imprimir bonito. Si no se tiene instalar en https://pypi.org/project/pprintpp/
- Terminal
- Una terminal o programa para correr los programas de python. Puede ser VS Code tambi茅n.
No. | Archivo | Prop贸sito/Descripci贸n |
---|---|---|
1 | Python3 |
Folder donde esta la gram谩tica, los lexer, parser, etc. Ac谩 dentro tambi茅n se encuentran los archivos de prueba y lo que se prueba |
2 | decafAlejandro.tokens |
Tokens generados por ANTLR |
3 | decafAlejandroLexer.py |
Es un python generado por ANTLR que contiene el lexer del proyecto |
4 | decafAlejandroListener.py |
Contiene un listener, es decir, una forma de recorrer el arbol sint谩ctico generado |
5 | decafAlejandroParser.py |
el parser generador por ANTLR para el proyecto |
6 | ErrorClass.py |
Una clase de errores para arrays o errores generales |
7 | funciones.py |
Un python con funciones generales y 煤tiles |
8 | mainSemantic.py |
programa m谩s importante. Ac谩 se genera la logica, los valores, y se revisan TODAS las reglas sem谩nticas |
9 | Gram谩tica V2 |
Tenemos una nueva coleccion de una segunda gram谩tica, esta se us贸 para eta fase, por ende veremos los mismos listener, tokens, y lexer soloq ue en V2 |
10 | symbolTable.py |
Clase que contiene TODAS las declaraciones para las tres tablas de simbolos principales: metodos, variables y estructuras |
11 | NodoBoolean.py |
Un nodo para guardar las expresiones de algo complejo como un nodo IF |
12 | NodoCodigo.py |
Una clase nodo para guardar expresiones y address de las cosas |
13 | GUI.py |
La interfaz gr谩fica |
14 | Readme.md |
El readme |
15 | ARMGenerator.py |
La clase encargada de tener lo necesario para generar codigo de ARM, la sintaxis del mismo |
16 | compiladorFinal.py |
La clase que tiene el compilador final |
15 | Python3/Programas/multiple_tests.decaf |
El programa donde probamos por defecto |
Course teacher: Bidkar Pojoy
- https://graphviz.org/about/
- https://graphviz.org/documentation/
- https://www.tutorialspoint.com/c_standard_library/time_h.htm
- https://docs.python.org/3/library/time.html
- Compiladores principios, t茅cnicas y herramientas, 2da Edici贸n - Alfred V. Aho
- Compa帽eros de clase
- More Coffe
- Coffe machine right next to me
- My family, all the people I love, THANKS!
Bajo la propia del desarrollador.