This shows you the differences between two versions of the page.
alf:laboratoare:06_fr_java [2023/04/11 00:06] alexandra.negoita02 |
alf:laboratoare:06_fr_java [2023/04/11 01:03] (current) alexandra.negoita02 |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== TP 6 - AST: Continuation ====== | ====== TP 6 - AST: Continuation ====== | ||
+ | |||
+ | <note warning> | ||
+ | Vous devez **accepter** l'assignment d'ici est travailler avec ce **repository**: [[https://classroom.github.com/a/zo3fA2GZ|Lab 6]] | ||
+ | </note> | ||
+ | |||
L'**AST** est une représentation arborescente de la structure syntaxique abstraite du code source écrit dans un langage de programmation. Chaque nœud de l'arborescence désigne un jeton identifié, reconnu comme étant dans un ordre correct pour le langage défini dans la grammaire. | L'**AST** est une représentation arborescente de la structure syntaxique abstraite du code source écrit dans un langage de programmation. Chaque nœud de l'arborescence désigne un jeton identifié, reconnu comme étant dans un ordre correct pour le langage défini dans la grammaire. | ||
Line 179: | Line 184: | ||
===== Exercices ====== | ===== Exercices ====== | ||
- | - Téléchargez la [[https://github.com/UPB-FILS-ALF/TP/tree/main/TP6|structure du TP]] et utilisez la grammaire **Ex1.g4** comme support pour les exercices. En suivant les lignes marquées par TODO 1, ajoutez les règles de grammaire, les classes et les méthodes nécessaires pour pouvoir déclarer aussi des variables et des expressions booléennes. Testez la fonctionnalité du programme pour l'exemple suivant: **(2p)** <code> bool _var1 = _var2 ||_var3 && !_var4; </code> | + | - Téléchargez le repository de Github pour TP6 et utilisez la grammaire **Alf.g4** comme support pour les exercices. En suivant les lignes marquées par TODO 1, ajoutez les règles de grammaire, les classes et les méthodes nécessaires pour pouvoir déclarer aussi des variables et des expressions booléennes. Testez la fonctionnalité du programme pour l'exemple suivant: **(2p)** <code> bool _var1 = _var2 ||_var3 && !_var4; </code> |
- | - Apportez les modifications nécessaires de sorte que chaque noeud de l'AST comprend aussi le numéro de la ligne ou il a été trouvé. **(1.5p)** | + | - Faites que la grammaire accepte aussi la concaténation des chaines de caracteres. Vérifiez pour l'exemple suivant: **(1.5p)** <code> String _var2 = "FILS " + "ALF"; </code> |
- | - Faites que la grammaire accepte aussi la concaténation des chaines de caracteres. Vérifiez pour l'exemple suivant: **(1.5p)** <code> string _var2 = "FILS " + "ALF"; </code> | + | |
- En suivant les lignes marquées par TODO 4, ajoutez à la grammaire les règles, classes et méthodes nécessaires pour que vous puissiez déclarer des listes. Les listes peuvent inclure n'importe quel type de données . Vérifiez pour la déclaration suivante: **(1.5p)** <code> list _var1 = [10, 5.5, 'alf', true, _var2]; </code> | - En suivant les lignes marquées par TODO 4, ajoutez à la grammaire les règles, classes et méthodes nécessaires pour que vous puissiez déclarer des listes. Les listes peuvent inclure n'importe quel type de données . Vérifiez pour la déclaration suivante: **(1.5p)** <code> list _var1 = [10, 5.5, 'alf', true, _var2]; </code> | ||
- | - En suivant les lignes marquées par TODO 5, ajoutez les règles, les classes et les méthodes necessaires pour la déclaration des fonctions. Une fonction peut avoir un ou plusieurs paramètres et son contenu peut inclure une seule ou plusieurs instructions. Vérifiez la correctitude de votre programme pour l'exemple suivant: **(3.5p)** <code>function _functionName (int _var1=0, string _var2="alf", bool _var3=true) | + | - En suivant les lignes marquées par TODO 5, ajoutez les règles, les classes et les méthodes necessaires pour la déclaration des fonctions. Une fonction peut avoir un ou plusieurs paramètres et son contenu peut inclure une seule ou plusieurs instructions. Vérifiez la correctitude de votre programme pour l'exemple suivant: **(3.5p)** <code>function _functionName (int _var1=0, String _var2="alf", bool _var3=true) |
{ | { | ||
_var1 = _var2 + "2021"; | _var1 = _var2 + "2021"; |