Tha1n / CompilerWhileCpp

1 stars 1 forks source link

WhileToCpp

Cette archive contient un compilateur de WHILE vers CPP. Il a été réalisé par Sébastien Blin, Pierre-Henri Collin, Kevin Ledy, Alexandre Quettier, Benjamin Vion.

Dépendances

Afin de pleinement utiliser notre compilateur vous aurez besoin de :

Architecture

Utilisation

Dans le dossier bin: java -jar whc.jar INPUT.wh

De plus les options -o (pour préciser un fichier de sortie) et -debug (afin de voir ce que fait plus précisément le compilateur)

Exemple

[AmarOk@TARSI ~/Projets/ESIR/COMP/ProjetCompilation/bin]java -jar whc.jar ../demo/swap.wh -debug
Generate 3@ code
[DBG]f += v_2 := v_1

[DBG]f += v_3 := v_0

[DBG]f += <:=, v_0,v_2, _>

[DBG]f += <:=, v_1,v_3, _>

Generate Cpp code
#include "BinTree.h"
#include <iostream>
#include <vector>

std::vector<BinTree> f0(std::vector<BinTree> args)
{
    //Read
BinTree v_0 = args.size() < 0? BinTree() : args.at(0);
BinTree v_1 = args.size() < 1? BinTree() : args.at(1);
//Instructions
//<AFF, v_2, v_1,_>
BinTree v_2 = v_1;

//<AFF, v_3, v_0,_>
BinTree v_3 = v_0;

//<AFF, v_0, v_2,_>
v_0 = v_2;

//<AFF, v_1, v_3,_>
v_1 = v_3;

//write
std::vector<BinTree> retour;
retour.push_back(v_0);
retour.push_back(v_1);
return retour;
}

int main(int argc, char *argv[]) {
std::vector<BinTree> entry;
argc > 1? entry.push_back(BinTree(argv[1])) : entry.push_back(BinTree());
argc > 2? entry.push_back(BinTree(argv[2])) : entry.push_back(BinTree());

std::vector<BinTree> result = f0(entry);
    for(auto bT : result)
        std::cout << bT << std::endl;
    return 0;
}

Now, you can run : /bin/g++ BinTree.* default.cpp -std=c++11 -o default

Exemples

Vous pouvez touver des exemples de code WHILE dans demo/