This shows you the differences between two versions of the page.
alf:laboratoare:04_fr_java [2023/03/28 01:36] alexandra.negoita02 [Visualisation de l'arbre d'analyse] |
alf:laboratoare:04_fr_java [2023/03/28 03:27] (current) alexandra.negoita02 |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== TP 4 - Parser ====== | ====== TP 4 - Parser ====== | ||
+ | |||
+ | ====== Assignment ====== | ||
+ | <note warning> | ||
+ | Vous devez **accepter** l'assignment d'ici est travailler avec ce **repository**: [[https://classroom.github.com/a/xAFtak5C|Lab 4]] | ||
+ | </note> | ||
+ | |||
+ | |||
Le but de ce TP est d'introduire la notion de ''parser'' en ANTLR4. | Le but de ce TP est d'introduire la notion de ''parser'' en ANTLR4. | ||
Line 39: | Line 46: | ||
declaration: type VARIABLE ';' { System.out.println("This is a declaration statement!"); } | declaration: type VARIABLE ';' { System.out.println("This is a declaration statement!"); } | ||
; | ; | ||
- | type : 'string ' | + | type : 'String ' |
| 'number ' | | 'number ' | ||
| 'boolean ' | | 'boolean ' | ||
Line 90: | Line 97: | ||
===== Utilisation du parser ===== | ===== Utilisation du parser ===== | ||
- | Un exemple d'utilisation du parser dans un fichier ''index.ts'': | + | Un exemple d'utilisation du parser dans un fichier ''Main.java'': |
<code java> | <code java> | ||
Line 118: | Line 125: | ||
{{ :alf:laboratoare:antlr-tree-preview.png?600&nolink }} | {{ :alf:laboratoare:antlr-tree-preview.png?600&nolink }} | ||
===== Exercices ===== | ===== Exercices ===== | ||
- | + | Pour chaque exercise, faites une capture d'ecran de l'arbre d'analyse et mettez-le dans le directoire ''ParseTree'' qui se trouve dans le Github repository. | |
- | - Suivez le tutoriel précédent (celui avec la déclaration d'une variable simple) pour la visualisation de l'arbre d'analyse. **(1p)** | + | - Ajoutez dans la grammaire d'une declaration (donnee dans le laboratoire) les instructions nécessaires pour la déclaration complexe des variables, selon le langage suivant: **(2p)** <code>int _var1 = 2; |
- | - Ajoutez dans la grammaire les instructions nécessaires pour la déclaration complexe des variables, selon le langage suivant: **(2p)** <code>int _var1 = 2; | + | |
float _var2 = 5.55; | float _var2 = 5.55; | ||
- | string _var3 = "alf"; </code> Suivez les étapes nécessaires pour visualiser l'arbre d'analyse et testez chaque règle à l'aide du fichier texte pour les données. | + | String _var3 = "alf"; </code> Suivez les étapes nécessaires pour visualiser l'arbre d'analyse et testez chaque règle à l'aide du fichier texte pour les données. |
- Ajoutez à votre grammaire des jetons et des règles pour les expressions mathématiques. Votre grammaire doit reconnaître les opérations et les opérateurs d'addition, soustraction, multiplication et division (+, -, *, /, %). Suivez les étapes nécessaires pour visualiser l'arbre d'analyse et testez la fonctionnalité du programme pour l'expression ''2+5/10-7''. **(3p)** | - Ajoutez à votre grammaire des jetons et des règles pour les expressions mathématiques. Votre grammaire doit reconnaître les opérations et les opérateurs d'addition, soustraction, multiplication et division (+, -, *, /, %). Suivez les étapes nécessaires pour visualiser l'arbre d'analyse et testez la fonctionnalité du programme pour l'expression ''2+5/10-7''. **(3p)** | ||
- Repétez l'exercice précédent en tenant compte du fait qu'une expression peut aussi contenir des variables. Comme mentionné dans le premier exercice, les variables sont de la forme ''_var1''. Vérifiez la correctitude de la grammaire en ajoutant l'expression ''15/_var1-5;'' au fichier texte pour les données.**(1p)** | - Repétez l'exercice précédent en tenant compte du fait qu'une expression peut aussi contenir des variables. Comme mentionné dans le premier exercice, les variables sont de la forme ''_var1''. Vérifiez la correctitude de la grammaire en ajoutant l'expression ''15/_var1-5;'' au fichier texte pour les données.**(1p)** | ||
- | - Ajoutez à la grammaire les jetons et les règles nécessaires pour accépter des parantheses à l'intérieur des expressions. Suivez les étapes nécessaires pour la visualisation de l'arbre et testez le programme en ajoutant l'expression ''(2+5)/3'' au fichier texte pour les données. **(1p)** | + | - Ajoutez à la grammaire les jetons et les règles nécessaires pour accépter des parantheses à l'intérieur des expressions. Suivez les étapes nécessaires pour la visualisation de l'arbre et testez le programme en ajoutant l'expression ''(2+5)/3'' au fichier texte pour les données. **(2p)** |
- Faites la grammaire accepter plus d'une expression, supposant que les expressions sont séparées par '';'', mais aussi par des lignes vides. Modifiez le contenu du fichier texte pour les données en ajoutant les expressions suivantes et visualisez l'arbre d'analyse: **(2p)** <code> | - Faites la grammaire accepter plus d'une expression, supposant que les expressions sont séparées par '';'', mais aussi par des lignes vides. Modifiez le contenu du fichier texte pour les données en ajoutant les expressions suivantes et visualisez l'arbre d'analyse: **(2p)** <code> | ||
- | string _var1 = "alf"; | + | String _var1 = "alf"; |
(2+7)/5*3; | (2+7)/5*3; | ||
</code> | </code> | ||
- **BONUS: ** Changez la grammaire pour que les variables puissent être déclarées en utilisant des expressions et visualisez l'arbre d'analyse pour l'instruction suivante: **(1.5p)** <code>int _var1 = 2 + 3 * 5;</code> | - **BONUS: ** Changez la grammaire pour que les variables puissent être déclarées en utilisant des expressions et visualisez l'arbre d'analyse pour l'instruction suivante: **(1.5p)** <code>int _var1 = 2 + 3 * 5;</code> | ||