This shows you the differences between two versions of the page.
|
alf:teme:tema3 [2022/04/08 12:20] diana.ghindaoanu [Informations] |
alf:teme:tema3 [2022/04/08 12:28] (current) diana.ghindaoanu [Erreurs] |
||
|---|---|---|---|
| Line 646: | Line 646: | ||
| ===== BONUS ===== | ===== BONUS ===== | ||
| + | |||
| + | Pour **0.5** points supplémentaires, implémentez une fonctionnalité pour le traitement des //**erreurs**//. | ||
| ==== Erreurs ==== | ==== Erreurs ==== | ||
| Line 665: | Line 667: | ||
| } | } | ||
| </code> | </code> | ||
| - | |||
| - | <note>Les lignes sont numérotées à partir de 1</note> | ||
| === Syntax === | === Syntax === | ||
| Line 681: | Line 681: | ||
| </code> | </code> | ||
| - | <note important> | + | <note> |
| La liste des erreurs doit être inclue dans un noeud de l'AST ayant la structure suivante: | La liste des erreurs doit être inclue dans un noeud de l'AST ayant la structure suivante: | ||
| Line 692: | Line 692: | ||
| </note> | </note> | ||
| - | <note warning> | + | |
| - | Les noms de jetons seront différents pour chacun d'entre vous, donc ils seront ignorés par le checker. Il vérifiera seulement que vous avez un jeton dans la liste. | + | ==== CONDITIONS ==== |
| - | </note> | + | |
| <note>Les lignes sont numérotées à partir de 1</note> | <note>Les lignes sont numérotées à partir de 1</note> | ||
| - | <hidden> | + | <note important> |
| - | ===== Bonus ===== | + | Sur GitHub, vous devez télécharger les fichiers suivants: |
| - | + | * index.ts | |
| - | Pour ** 0.5p ** supplémentaires, implémentez: | + | * Alf.g4 |
| - | + | * AlfLexer.ts | |
| - | Ajoutez un prétraitement à la source. On a: | + | * AlfListener.ts |
| - | * register | + | * AlfParser.ts |
| - | * if then / else / endif | + | * AlfVisitor.ts |
| - | * unregister | + | * tout autre fichier supplémentaire que vous avez créé pour traiter votre code |
| - | + | ||
| - | === register === | + | |
| - | Enregistre une valeur dans un identifiant. | + | |
| - | + | ||
| - | <code> | + | |
| - | ®ister identifier value | + | |
| - | </code> | + | |
| - | + | ||
| - | L'identifiant sera remplacé dans le programme par la valeur (textuellement). | + | |
| - | + | ||
| - | === if === | + | |
| - | Vérifie si un identifiant est enregistré et a une valeur et l'ajoute dans le code source jusqu'à else ou endif. Else est facultatif. | + | |
| - | + | ||
| - | <code> | + | |
| - | ®ister platform ... | + | |
| - | + | ||
| - | ... | + | |
| - | + | ||
| - | &if platform = windows | + | |
| - | p <- "Windows" {this source is ignored if platform is not windows} | + | |
| - | &else | + | |
| - | p <- "Linux" {this source code is ignored if platform is not linux} | + | |
| - | &end | + | |
| - | </code> | + | |
| - | + | ||
| - | === unregister === | + | |
| - | Annule la valeur d'un identifiant. | + | |
| - | + | ||
| - | <code> | + | |
| - | ®ister N value | + | |
| - | + | ||
| - | ... | + | |
| - | + | ||
| - | &unregister N | + | |
| - | + | ||
| - | #N is undefined# | + | |
| - | </code> | + | |
| - | + | ||
| - | <note> | + | |
| - | Toutes les étiquettes de prétraitement sont sur une ligne distincte. | + | |
| </note> | </note> | ||
| - | <note> | + | <note warning> |
| - | Le bonus ne sera attribué que si tous les autres tests réussissent. | + | Les noms de jetons seront différents pour chacun d'entre vous, donc ils seront ignorés par le checker. Il vérifiera seulement que vous avez un jeton dans la liste. |
| </note> | </note> | ||
| - | ===== Testing ===== | ||
| - | Les devoir seront testés automatiquement en utilisant un ensemble de tests publics et privés. | ||
| - | |||
| - | ==== Tests publics ==== | ||
| - | |||
| - | Vous pouvez télécharger les tests publics du GitHub [[https://github.com/upb-fils/alf/tree/master/Devoir/alf|repository]]. | ||
| - | |||
| - | Pour exécuter les tests, téléchargez le contenu du repository dans le dossier avec les devoir. Entrez dans dossier //verify// et exécutez ./run_all.sh. | ||
| - | |||
| - | <code bash> | ||
| - | cd verify | ||
| - | ./run_all.sh | ||
| - | </code> | ||
| - | |||
| - | Vous aurez besoin de bash pour ça. Vous pouvez utiliser Linux ou [[https://msdn.microsoft.com/fr-fr/commandline/wsl/install_guide|Windows Linux Subsystem]]. | ||
| - | |||
| - | <note> | ||
| - | Pour installer nodejs sous Linux ou Windows Linux Subsystem, procédez comme suit: | ||
| - | |||
| - | <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> | ||
| - | |||
| - | ==== Tests privés ==== | ||
| - | Lors du téléchargement des devoir, il se peut que nous ayons des tests privés à faire passer. //vmchecker// les exécutera. | ||
| - | |||
| - | <note> | ||
| - | Vous pouvez toujours télécharger les devoir autant de fois que vous le souhaitez jusqu'à la date limite. Cela va exécuter tous les tests pour vous et afficher le résultat. | ||
| - | </note> | ||
| - | |||
| - | ===== Télécharger les devoir ===== | ||
| - | Le devoir doit être téléchargé sur [[https://vmchecker.cs.pub.ro|vmchecker]]. Connectez-vous avec votre nom d'utilisateur moodle, sélectionnez le cours //Automates et Langages Formelles (FILS)// et téléchargez [[#homework-archive|homework archive]]. | ||
| - | |||
| - | ==== Readme ==== | ||
| - | Le fichier readme a le format suivant: | ||
| - | |||
| - | <code> | ||
| - | Nom complet | ||
| - | Groupe | ||
| - | |||
| - | Une explication comment vous avez écrit vos devoir, qu'utilisiez-vous, quelles sont les idées principales. | ||
| - | </code> | ||
| - | |||
| - | |||
| - | ==== Archive des devoir ==== | ||
| - | Pour télécharger vos devoir, vous avez les instructions suivantes: | ||
| - | |||
| - | - Créez une archive zip (pas rar, ace, 7zip ou autre) contenant: | ||
| - | * votre fichier principal (défini dans package.json) | ||
| - | * vos fichiers javascript (*.js) | ||
| - | * votre fichiers l et y (grammar.l et grammar.y) | ||
| - | * le fichier package.json | ||
| - | * le fichier Readme | ||
| - | - Connectez-vous avec [[https://vmchecker.cs.pub.ro|vmchecker]] | ||
| - | - Sélectionnez le cours //Automates et Langages Formelles (FILS)// | ||
| - | - Sélectionnez //3. Langage Alf// | ||
| - | - Téléchargez l'archive | ||
| - | |||
| - | |||
| - | <note> | ||
| - | L'archive doit contenir les fichiers dans sa racine, pas dans un dossier. NE PAS archiver un dossier avec les fichiers, archiver DIRECTEMENT les fichiers. | ||
| - | |||
| - | NE PAS inclure //node_modules//. | ||
| - | </note> | ||
| - | |||
| - | Lorsque l'archive est téléchargée, vmchecker exécutera: | ||
| - | |||
| - | <code bash> | ||
| - | unzip archive.zip homework | ||
| - | cd homework | ||
| - | npm install | ||
| - | echo '{ "node":true, "loopfunc": true, "esnext":true }' > .jshintrc | ||
| - | jshint *.js | ||
| - | jison grammar.y grammar.l -o grammar.js | ||
| - | </code> | ||
| - | </hidden> | ||