This shows you the differences between two versions of the page.
alf:laboratoare:05_fr_java [2023/04/03 18:43] alexandra.negoita02 |
alf:laboratoare:05_fr_java [2023/04/04 09:19] (current) alexandra.negoita02 [Exercices] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== TP 5 - Parser du langage. Introduction à l'AST ====== | ====== TP 5 - Parser du langage. Introduction à l'AST ====== | ||
<note warning> | <note warning> | ||
- | Vous devez **accepter** l'assignment d'ici est travailler avec ce **repository**: [[https://classroom.github.com/a/xAFtak5C|Lab 5]] | + | Vous devez **accepter** l'assignment d'ici est travailler avec ce **repository**: [[https://classroom.github.com/a/g8KTvWH-|Lab 5]] |
</note> | </note> | ||
Line 235: | Line 235: | ||
===== Exercices ===== | ===== Exercices ===== | ||
- | - Téléchargez la structure du TP depuis le github repository donne, telecharger et importez l'archive GSON comme dit dans le laboratoire, et inspectez la structure de la grammaire. **(1p)** | + | - Téléchargez la structure du TP depuis le github repository donné, téléchargez et importez l'archive GSON comme dit dans le laboratoire, et inspectez la structure de la grammaire. **(1p)** |
- | - Ajoutez au fichier de grammaire les règles pour accepter plusieurs instructions. Les instructions peuvent etre séparées par '';'' et une ou plusieurs lignes vides. Ajoutez les classes et les méthodes nécessaires pour pouvoir visiter les noeuds. Dans l'AST, chaque instruction doit etre ajoutée dans la liste //statements// du noeud principal. Testez le programme pour les instructions suivantes: **(3p)** <code bash>float _var1 = 7.5; | + | - Ajoutez au fichier de grammaire les règles pour accepter plusieurs instructions. Les instructions peuvent etre séparées par '';'' et une ou plusieurs lignes vides. Ajoutez les classes et les méthodes nécessaires pour pouvoir visiter les noeuds. Dans l'AST, chaque instruction doit être ajoutée dans la liste //statements// du noeud principal. Testez le programme pour les instructions suivantes: **(3p)** <code bash>float _var1 = 7.5; |
string _var2 = 'alf';</code> | string _var2 = 'alf';</code> | ||
- | - Ajoutez à la grammaire décrite dans l'exemple les règles nécessaires pour l'utilisation des expressions (plusieurs expressions) du laboratoire précédent. Votre grammaire doit accepter maintenant aussi les déclarations des variables, que les expressions. Ajoutez les classes et les méthodes nécessaires pour visiter les nouveaux noeuds et générer l'arbre. Le noued correspondant aux expressions doit avoir les propriétés suivantes:, //id: "expression"//, //left// (le neoud correspondant a l'opérande de gauche), //right// (le neoud correspondant a l'opérande de droite), //op// (la valeur de l'opérateur). Testez la correctitude de votre grammaire en lisant les instructions suivantes depuis un fichier texte: **(3p)** <code bash>int _var1 = 1; | + | - Ajoutez à la grammaire décrite dans l'exemple les règles nécessaires pour l'utilisation des expressions (plusieurs expressions) du laboratoire précédent. Votre grammaire doit accepter maintenant aussi les déclarations des variables, que les expressions. Ajoutez les classes et les méthodes nécessaires pour visiter les nouveaux noeuds et générez l'arbre. Le noued correspondant aux expressions doit avoir les propriétés suivantes:, //id: "expression"//, //left// (le neoud correspondant a l'opérande de gauche), //right// (le neoud correspondant a l'opérande de droite), //op// (la valeur de l'opérateur). Testez la correctitude de votre grammaire en lisant les instructions suivantes depuis un fichier texte: **(3p)** <code bash>int _var1 = 1; |
5*(2+4)/7;</code> | 5*(2+4)/7;</code> | ||
- Ajoutez des règles et modifiez les méthodes du **Visitor** pour que les variables puissent prendre des valeurs qui sont des expressions. Testez pour l'instruction suivante: **(3p)** <code bash>float _var1 = 5*(2+4)/7;</code> | - Ajoutez des règles et modifiez les méthodes du **Visitor** pour que les variables puissent prendre des valeurs qui sont des expressions. Testez pour l'instruction suivante: **(3p)** <code bash>float _var1 = 5*(2+4)/7;</code> |