JSCPP : un interpréteur C++ écrit en JavaScript

Par:
fredericmazue

lun, 27/08/2018 - 14:46

Il s'agit d'un interpréteur développé pour un cours MOOC, donc au départ uniquement à des fins pédagogiques. Partant du constat que jusque là, pour mettre un environnement d'exécution C++ en ligne il était nécessaire d'utiliser des serveurs compilant le code C++ à exécuter, l'auteur propose JSCPP, un interpréteur C++ qui peut travailler avec un serveur node.js, ou même de manière totalement autonome dans un navigateur.

JSCPP est un interpréteur C++ écrit en JavaScript. Certes en l'état, il est bien loin de prendre en charge l'intégralité du standard C++, mais il a le mérite d'exister et une utilisation dans un cadre pédagogique, disons pour prendre contact avec C++ sans devoir compiler du code à chaque fois paraît intéressante.

Obtenir un navigateur qui interprète du C++ est tout simple. On doit simplement charger le code JavaScript de l'interpréteur et mettre C++ à interpréter dans une chaine de caractère. Par exemple comme ceci :

<script src="JSCPP.es5.min.js"></script>
<script type="text/javascript">
           var code =            "#include <iostream>"+
                                            "using namespace std;"+
                                            "int main() {"+
                                            "    int a;"+
                                            "    cin >> a;"+
                                            "    cout << a << endl;"+
                                           "    return 0;"+
                                            "}"
           ;
           var input = "4321";
           var output = "";
           var config = {
                      stdio: {
                                 write: function(s) {
                                            output += s;
                                 }
                      }
           };
           var exitCode = JSCPP.run(code, input, config);
           alert(output + "\nprogram exited with code " + exitCode);
</script>

Cette approche permet de modifier le code C++ dans le navigateur et de tester immédiatement le résultat.  

Une démonstration en ligne de JSCPP est disponible ici.

JSCPP est open source. Son code est disponible sur GitHub.