Giter Club home page Giter Club logo

poly-compiler's People

Contributors

drainman avatar hagbuck avatar

Watchers

 avatar

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 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.