stefanomunari / fac Goto Github PK
View Code? Open in Web Editor NEWF Academic Compiler
License: Other
F Academic Compiler
License: Other
Costringere a livello sintattico di inizializzare le variabili. Dobbiamo anche decidere come viene modificato l'AST, è meno banale del previsto :/.
Sistemare makefile in modo tale da creare la cartella bin non all'interno di src
merge parser into master after all the other enhancement and bug tickets have been closed
Note:
the person who completes parser cannot be the same one who reviews and merges it into master
Segmentation Fault recipe:
Go in "result" directory.
Execute an exercise ../bin/fac ../examples/ex1.f C
Documentare e sistemare (rifattorizzare se necessario???) il codice
Sistemare i nomi delle variabili e le label (cosí Satta è contento, per esempio t1, t2 e L1, L2)
TAC generation broken (segfault)
Briefly explain what this thing does
how to compile it
how to run it
how to test it
how to generate the dev documentation
insert a reference to FAC-docs
The printer generates a C program which does not skip the branch labels
Dividere i file nelle rispettive cartelle:
Sistemare il polimorfismo per tac_printer.c (non sono riuscito a farlo andare :/ senza rinominare la funzione tac_printer nel file tac_printer.c.)
Using valgrind our program shows some memory leaks.
They should be due to the temporary variables allocated on the stack.
You can view where these are created with this valgrind invokation (for instance!!!):
valgrind --leak-check=yes ./bin/fac examples/ex1.f C
Improve readability in general but particularly assignment of type x=y
. I think that x = y
is easier to read
check ex and add other examples if necessary
check if everything works properly
Note:
the person who completes parser cannot be the same one who reviews and merges it into master
We should decide where and how to treat statement with no effect.
If we parse them and then simply ignore them during the syntactic analysis, we encounter problems in the if and while TAC generation, because we assume that the body of the statements and especially of the if is not NULL.
I have two solution' proposals:
Check grammar rules in branch parser-review
once parser is done rebase it into cunit and proceed with the tests
write most significant tests for the project (use cunit branch)
We could add the option verbose
to improve readability of output.
For instance the printing of the ast tree should be optional. Waiting for a feedback..
In order to make the tac printing easier and less error prone we could seriously consider the idea of introducing two new tokens TAC_SIGN_PLUS and TAC_SIGN_MINUS to distinguish them from TAC_AOP1 and TAC_AOP0.
Le variabili potrebbero essere (secondo me) salvate in un file.h che dopo importiamo di ignoranza nel codice C.
It is the last issue to complete. Squash duplicate commits. Fix useless one. Filter deprecated files from the project tree.
Controllare che sia effettivamente corretto il printing C finale (--> testare doppi cicli annidati)
Decidere se e come fare (a che livello) dead code elimination.
Quella molto semplice if(false) BLOCCO ---> codice vuoto ecc.
Use 80 chars convention in all files!!
Aggiungere a livello sintattico il controllo che i blocchi di if ed else non siano vuoti
Some examples give "Floating point exception". Check ex22.f (1|3 * 1|3)
Secondo me una volta che abbiamo tutti i printer, il file tac test
va eliminato. Ricordiamoci prima della consegna.
Improve type checker error reporting especially with respect to b0 == b1 e b0 <> b1
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.