Differences

This shows you the differences between two versions of the page.

Link to this comparison view

alf:laboratoare:04_fr_java [2023/03/28 01:38]
alexandra.negoita02 [Exercices]
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.
    - 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 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;
 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>​
  
alf/laboratoare/04_fr_java.1679956700.txt.gz · Last modified: 2023/03/28 01:38 by alexandra.negoita02
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0