baquiax / compiler Goto Github PK
View Code? Open in Web Editor NEWCompiler project - Computer Science 4.
License: Apache License 2.0
Compiler project - Computer Science 4.
License: Apache License 2.0
A partir de las pruebas del Parser, verificar que todos los tokens han sido tomados en cuenta.
Es posible que podas crear en los Nodos del AST, un método que pueda imprimir de forma lineal las cosas. e.g
En el caso del Assign, actualmente el print del AST retorna algo como
=
variable
3
Pero en el caso del Semantic sería ideal que se imprimiera algo como:
variable = 3
Para reportar errores.
Esta tarea tiene el deber de llevar el desarrollo de la gramática que debemos implementar para el lenguaje Decaf.
Después de la primera revisión del CLI se hallaron algunas mejoras y bugs.
Esta tarea conlleva la responsabilidad de resolver la
CONSTRUCCIÓN DE INSTANCIAS INVERTIDA
que posee hasta ahora el proyecto. Ahora se sabe el orden más cercano al correcto que deberían tener nuestras clases del compilador.
La tarea #1 generó 2 tareas más de las cuales esta tiene como objetivo:
Delegar la tarea de contener la configuración del Compilador, removiendo esto de la clase Scanner.java.
Por ahora sabremos que en esta clase estarán las propiedades estáticas publicas: HastTable<String, String> flags
e int stopStage
.
Puede que en un futuro se extienda esta clase, pero para la la primera versión del Compilador solo será esto.
Empezar a definir el AST
Lo primero que debemos realizar es: diseñar como se estructurará nuestro CLI, en cuanto a clases, paquetes, métodos e interoperabilidad.
Es decir, indicar que clases o que métodos de clases usaremos y tendremos que crear.
Lo importante de acá es aclarar la funcionalidad de todos los componentes del CLI; aunque estos no sean exactos y super específicos.
@marroq El día de hoy iniciaré el diseño de componentes, y en base a eso nos repartiremos el trabajo.
Los requerimientos se encuentran en: http://diegofigueroa.github.io/ug-cc4-projects/projects/cli.html
La idea es concluir este diseño.
https://repository.genmymodel.com/baquiax/compiler-cli-design
Clases que contendrán la estructura de análisis semántico para el compilador
Corregir debug para el AST.
Probar todos los casos posibles de código válido e invalido de Decaf.
TODO
Notificar inconsistencias en el Lexer
Se pretende mejorar la forma de validar los valores de los flags en una llamada al Compiler.
Permitir que el flag -target no sea obligatorio, y que por default tenga el valor del estado actual del compilador.
Imprimir en el -o del compilador, el resultado de la tabla de símbolos.
Definir la gramática para el Lexer del Compilador.
Dar el control completo al compilador. Iniciar proceso de Compilación desde acá.
Acá se elegirá la case a instancias y el parámetro que necesita.
e.g
El proceso requerido llega al semantic
, Entonces se debe crear primero un Ast
, que reciba un CC4Parser
y que ese parser reciba un Scanner
. Esta lógica la debe manejar el Compiler.java
.
Esta tarea depende directamente de #8.
_@marroq Debes esperar hasta que la tarea #8 este cerrada para poder inciar esta_
Ejemplo textual de la transformación de código Decaf a IRT.
La tarea #1 generó dos tareas. La primera #2 ha sido me ha sido asignada.
Esta tarea corresponderá a @marroq :)
La idea es trabajar en el resto de de clases que conforman el compilador. En ella se deben realizar:
Compiler.debugStages
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.