This shows you the differences between two versions of the page.
alf:teme:tema5 [2020/05/06 18:13] diana.ghindaoanu [Les tests publics] |
alf:teme:tema5 [2022/05/22 19:57] (current) diana.ghindaoanu |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Information ===== | ===== Information ===== | ||
<note important> | <note important> | ||
- | Date limite: **22 mai, 23:55**\\ | + | Date limite: **3 juin, 23:55**\\ |
Points: **2 points** de la note finale\\ | Points: **2 points** de la note finale\\ | ||
- | Téléchargement du devoir: [[https://vmchecker.cs.pub.ro|vmchecker.cs.pub.ro]]\\ | ||
</note> | </note> | ||
===== Demande ===== | ===== Demande ===== | ||
- | Le but de ce devoir est de traduire un Langage Alf fourni sous forme de fichier AST avec des données sémantiques dans Web Assembly. Votre programme recevra deux paramètres: le fichier source (le fichier des devoirs précédents, avec la table des symboles, l'AST et la liste des erreurs) et le fichier de sortie. **Vous n'avez pas besoin d'une version correcte du devoir 4!** Les fichiers de test ont déjà été générés et vous pouvez les trouver sur [[https://github.com/alexandruradovici/alf/tree/master/Devoirs/assembly/verify/assembly|github]]. Les programmes auront n'importe quel type de variable. La concaténation de chaînes n'est pas fournie (à l'exception de quelques tests de test). | + | Le but de ce devoir est de traduire un Langage Alf fourni sous forme de fichier AST avec des données sémantiques dans Web Assembly. Votre programme recevra deux paramètres: le fichier source (le fichier des devoirs précédents, avec la table des symboles, l'AST et la liste des erreurs) et le fichier de sortie. **Vous n'avez pas besoin d'une version correcte du devoir 4!** Les fichiers de test ont déjà été générés et vous pouvez les trouver sur [[https://github.com/upb-fils/alf/tree/master/Devoirs/assembly/verify/assembly|github]]. Les programmes auront n'importe quel type de variable. La concaténation de chaînes n'est pas fournie (à l'exception de quelques tests de test). |
<code bash> | <code bash> | ||
- | node main.js file.alf.json file.wat | + | node main.js fisier.alf.json fisier.alf.opt.json fisier.wat [optimisations,] |
</code> | </code> | ||
Line 73: | Line 72: | ||
* 255 octets pour les symboles | * 255 octets pour les symboles | ||
- | {{ :alf:teme:strings.png?nolink&200 |}} | + | {{ :alf:teme:strings.png?nolink&300 |}} |
===== Règles pour l'allocation des variables ===== | ===== Règles pour l'allocation des variables ===== | ||
Line 172: | Line 171: | ||
* supprimer les variables et fonctions inutilisées | * supprimer les variables et fonctions inutilisées | ||
- | + | Pour le bonus, il y a 2 parametres supplementaires dans la ligne de commande: | |
- | ===== Tester ===== | + | |
- | + | ||
- | Le devoir va être testé automatiquement en utilisant un set avec des tests publics et privés. | + | |
- | + | ||
- | ==== Les tests publics ==== | + | |
- | + | ||
- | Vous pouvez télécharger les tests publics de GitHub [[https://github.com/alexandruradovici/alf2018/tree/master/Devoirs/assembly|repository]]. | + | |
- | + | ||
- | Pour exécuter les tests, télécharger le contenu du repository dans un dossier avec le devoir. Entrez dans le dossier //verify// et exécuter ./run_all.sh. | + | |
<code bash> | <code bash> | ||
- | cd verify | + | node main.js fisier.alf.json fisier.alf.opt.json fisier.wat [fold_constants] [unused] |
- | ./run_all.sh | + | |
</code> | </code> | ||
- | |||
- | Vous devez avoir bash pour faire ça. Vous pouvez utiliser soit Linux, soit [[https://msdn.microsoft.com/en-us/commandline/wsl/install_guide|Windows Linux Subsystem]]. | ||
<note> | <note> | ||
- | Pour installer nodejs en Linux ou Windows Linux Subsystem, suivez les pas suivants: | + | [] signifie qu'il s'agit de quelque chose d'optionnel |
- | + | ||
- | <code bash> | + | |
- | wget https://nodejs.org/dist/v6.10.0/node-v6.10.0-linux-x64.tar.xz | + | |
- | tar xvfJ node-v6.10.0-linux-x64.tar.xz | + | |
- | cd node-v6.10.0-linux-x64 | + | |
- | sudo cp -R * /usr | + | |
- | </code> | + | |
- | | + | |
</note> | </note> | ||
- | ==== Les tests privés ==== | ||
- | Quand vous téléchargez le devoir, c`est possible qu'il y a des tests prives que votre devoir doit passer. vmcheker va les exécuter. | ||
- | <note> | ||
- | Vous pouvez télécharger le devoir autant que des fois que vous voulez jusqu`à la date limite. Il va exécuter tous les tests pour vous et il va afficher les résultats. | ||
- | </note> | ||
- | |||
- | ===== Télécharger le devoir ===== | ||
- | Le devoir doit être télécharger sur [[https://vmchecker.cs.pub.ro|vmchecker]]. Connectez vous avec votre nom d`utilisateur de moodle, séléctionnez le course //Automates et Langages Formelles (FILS)// et téléchargez le [[#homework-archive|homework archive]]. | ||
- | |||
- | ==== Readme ==== | ||
- | Le fichier Readme doit avoir le format suivant: | ||
- | |||
- | <code> | ||
- | Votre nom complet | ||
- | Groupe | ||
- | |||
- | Une explication comment vous avez écrit le devoir, qu`est-ce que vous avez utilisé, quels sont les idées principales. | ||
- | </code> | ||
- | |||
- | |||
- | ==== Archive du Devoir ==== | ||
- | Pour télécharger le devoir, je vous en prie de suivre les pas suivants: | ||
- | |||
- | - Créer une archive ZIP (pas un rar, ace, 7zip ou quelque chose d`autre) qui contient: | ||
- | * le fichier main (main.js) | ||
- | * les fichiers javascript (*.js) | ||
- | * le fichier jison (alfy.jison) | ||
- | * yarn.lock (si vous utilisez yarn) | ||
- | * le fichier package.json | ||
- | * le fichier Readme | ||
- | - connecter avec [[https://vmchecker.cs.pub.ro|vmchecker]] | ||
- | - sélectionner le course //Automates et Langages Formelles (FILS)// | ||
- | - sélectionner //5. Langage SuperFILS// | ||
- | - télécharger l`archive | ||
- | |||
- | |||
- | <note> | ||
- | L`archive doit contenir les fichiers dans la racine et pas dans un dossier. NE PAS archiver un dossier avec les fichiers, archiver DIRECTEMENT les fichiers. | ||
- | |||
- | NE PAS inclure //node_modules//. | ||
- | </note> | ||
- | |||
- | Quand l`archive est téléchargée, vmcheker va tester: | ||
- | |||
- | <code bash> | ||
- | unzip archive.zip homework | ||
- | cd homework | ||
- | # if the file yarn.lock exists | ||
- | yarn | ||
- | # else | ||
- | npm install | ||
- | echo '{ "node":true, "loopfunc": true, "esnext":true }' > .jshintrc | ||
- | jshint *.js | ||
- | jison alfy.jison -o alfy.js | ||
- | </code> |