poly-compiler's People
poly-compiler's Issues
Scripts samples
toto(x,y){
var re;
var antho;
re = x * y;
antho = re - 1;
print(antho);
return antho;
}
main()
{
var a;
a = toto(2,5);
print(a);
return a;
}
Bloquant ~ Opérateur ^
PATCHER
Criticité : Bug bloquant non bloquant à la compilation.
Description : L’utilisation de l'opérateur "^" avec des variables provoquent un crash du compilateur ne fonctionne pas. Provoque la fin de la compilation avec une erreur.
Problème identifié : Ne marche que pour les expressions purement mathématiques.
Solutions envisageables :
Virer l'opérateur- Lever une exception (solution prise, le compilateur ne peux plus cracher *quelque soit l'erreur. Provoque une sortie correcte du programme #6eef31c)
- Patcher la fonction (bout pré-construit d'assembleur) -> TODO
Code source associé :
main()
{
var a;
var b;
a = 1;
b = 0;
print a ^ b;
}
Réalisation de fiches/cas de tests
A préparer avec le rendu et pour nous tout simplement, préparer quelques scénarios et cas de tests (ex : priorités opératoires, caractères invalides etc...)
Editer pour idées :
- 3 * 4 + 9 * 2
- 4 + (6 * 3
Rendu final
Date de rendu : 13/01/2018 (max 14/01 6/7h)
Package (.zip) :
- Code du compilateur (nétoyé : code inutilisé, commentaire useless)
- README.md mis à jour.
- Rapport : Liste de ce qui marche ou pas. Expliquer ce qui ne marche pas et où. Identification de problème, reproduction ? Difficultés ? PDF
Test :
- Double boucle ? (while/while) (while/for) --> DONE
- Boucle + Récursif --> DONE
Test un peu chelou à passer :
- a = b = 7; //met 7 dans b et la valeur de b dans a
- toto( a = 3);
- a = a = .....
Test échec :
- Pas de main ? --> DONE
- Element en dehors du bloc main ou fonction --> DONE
Listes des éléments obligatoires :
- Expression : Non régréssion par rapport à la version intérmédiaire. (exp : parsing mais pas de génération full option)
- Variable : Déclaration, référence & affectation.
- Condition : if, if & else, elseif
- Boucle : while / for(...;...;...) (+) / break et continue (pour tt les points) (+)
- Fonction : Déclaration et appels.
Supplémentaires (donner exemple dans la doc) :
- Pointeur
- Switch
- Explication des prints
Idées cool ++ (pas demandé) :
- Ajout d'option "-o" pour activer/désactiver l'optimisation.
- Ajout d'une option pour lancer la compilation de plusieurs fichiers dans le même répértoire ?
- Printf ?
Non bloquant ~ utilisation de continue.
Criticité : Bug non bloquant à la compilation.
Description : L'utilsiation de "continue" dans un "for" génère un code avec une boucle infinie.
Problème identifié : Dans la génération de code, "continue" saute directement au début du label de "for" sans effectuer le "step" (i++). L'incrémentation n'étant pas faite, cela créér une boucle infinie.
Solutions enviseagables :
- Créer un "node_step" ?
- Ordonencement du code généré ?
Code source associé :
function_rec(a,b)
{
if(b != 0)
return function_rec(a,b = b - 1);
else
return a;
}
function_simple(a,b)
{
var iteration;
var i;
for(i = 1 ; i <= 3 ; i = i + 1)
{
iteration = function_rec(a,b);
if(i == 2){print i;continue;}
print iteration;
}
}
main()
{
var i;
i = 0;
function_simple(10,10);
}
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.