Giter Site home page Giter Site logo

compiler's People

Contributors

baquiax avatar marroq avatar

Watchers

 avatar  avatar  avatar

Forkers

marroq

compiler's Issues

Agregar método para impresión lineal. toString()

@marroq

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.

Gramática Decaf

Esta tarea tiene el deber de llevar el desarrollo de la gramática que debemos implementar para el lenguaje Decaf.

[Bug] Corregir forma de instanciar clases.

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.

[Development] Compiler.java

La tarea #1 generó 2 tareas más de las cuales esta tiene como objetivo:

  • Generar la clase principal del proyecto
  • Validar flags
  • Validar existencia de archivos
  • Validar duplicidad de flags
  • Iniciar proceso de compilación simulada

[Nuevas clases] Crear clase en lib/Configuration.java

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.

AST

Empezar a definir el AST

[CLI] Diagrama de clases y componentes del CLI.

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

image

QA y correcciones al Parser.

Probar todos los casos posibles de código válido e invalido de Decaf.

TODO
Notificar inconsistencias en el Lexer

[Improvement] Mejorar validaciones de flags.

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.

[Improvement] Dar el control del Compilador a Compiler.java

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_

[Development] Compiler structure.

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:

  • Imprimir texto descriptivo, simulando que los métodos están completamente implementados.
  • Utilizar la clase Compiler.java para verificar si determinada fase tiene habilitada el debugging. Compiler.debugStages
  • Comentar los métodos de forma bonita 😄
  • Agregar por último los resultados al Wiki

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.