This shows you the differences between two versions of the page.
alf:laboratoare:03_fr_java [2023/03/19 21:12] alexandra.negoita02 [Exercices] |
alf:laboratoare:03_fr_java [2023/04/03 17:37] (current) alexandra.negoita02 [Lexer en ANTLR4] |
||
---|---|---|---|
Line 138: | Line 138: | ||
<note important> | <note important> | ||
- | Après chaque modification apportée à la grammaire (fichier ''alf.g4''), vous devez generer de nouveau les fichiers de ANTLR, avec clic-droit sur le fichier de grammaire > 'Generate ANTLR Recognizer' | + | Après chaque modification apportée à la grammaire (fichier ''alf.g4''), vous devez generer de nouveau les fichiers de ANTLR, avec clic-droit sur le fichier de grammaire > ''Generate ANTLR Recognizer'' |
</note> | </note> | ||
===== Exercices ===== | ===== Exercices ===== | ||
- | - **(Sans ANTLR)** Traitez le tableau ci-dessous a l'aide des **expressions régulières** de sorte que chaque livre devienne un objet de type Book, avec les suivantes propriétés: //titre// (string), //ISBN// (number), et //date de publication// (string). **(1p)** <code javascript> let books_array: string[] = [ | + | - **(Sans ANTLR)** Traitez le tableau ci-dessous a l'aide des **expressions régulières** de sorte que chaque livre devienne un objet de type Book, avec les suivantes propriétés: //titre// (string), //ISBN// (number), et //date de publication// (string). **(1p)** <code java> String[] books_array = {"Engineering a Compiler,9780120884780,7th February 2011", |
- | 'Engineering a Compiler,9780120884780,7th February 2011', | + | "Modern Operating Systems 4,9780133591620,21st March 2014", |
- | 'Modern Operating Systems 4,9780133591620,21st March 2014', | + | "Computer Networks,9332518742,9th January 2010"};</code> |
- | 'Computer Networks,9332518742,9th January 2010' | + | |
- | ];</code> | + | |
- Installez ANTLR4 globalement, en suivant les étapes du laboratoire. **(1p)** | - Installez ANTLR4 globalement, en suivant les étapes du laboratoire. **(1p)** | ||
- Créez le programme complet présenté dans le tutoriel de ce TP (fichiers de configuration, fichier Alf.g4, fichier Main.java) et assurez-vous que son exécution est réalisée sans d'erreurs. Faites input string "Hello <votre nom>!"**(1p)** | - Créez le programme complet présenté dans le tutoriel de ce TP (fichiers de configuration, fichier Alf.g4, fichier Main.java) et assurez-vous que son exécution est réalisée sans d'erreurs. Faites input string "Hello <votre nom>!"**(1p)** | ||
- Affichez la liste des tokens: **(1p)** | - Affichez la liste des tokens: **(1p)** | ||
- | - A l'aide des fonctions pour les strings, traitez le fichier ''Alf.tokens'' créé automatiquement par ANTLR et générez un HashMap qui ait comme clés l'indice de vos tokens et comme valeurs leur nom. **(0.5p)** <code bash>[ '1': 'NEWLINE', '2': 'INT' ]</code> | + | - A l'aide des fonctions pour les strings, traitez le fichier ''Alf.tokens'' créé automatiquement par ANTLR et générez un HashMap qui ait comme clés l'indice de vos tokens et comme valeurs leur nom. **(0.5p)** <code bash>{1='Hello ', 2='!', 3=NAME}</code> |
- Parcourez et affichez la liste des tokens (pour chaque token, affichez son nom et sa valeur comme dans l'exemple. **Indice**: Pour pouvoir afficher la liste des tokens, vous devrez inspecter la classe //BufferedTokenStream// et choisir une méthode qui retourne cette liste. Vous aurez aussi besoin de la fonction **nextToken()** pour parcourir le buffer de données. **(0.5)** <code bash>[{ '10': 'INT', '\n': 'NEWLINE', '20': 'INT' }</code> | - Parcourez et affichez la liste des tokens (pour chaque token, affichez son nom et sa valeur comme dans l'exemple. **Indice**: Pour pouvoir afficher la liste des tokens, vous devrez inspecter la classe //BufferedTokenStream// et choisir une méthode qui retourne cette liste. Vous aurez aussi besoin de la fonction **nextToken()** pour parcourir le buffer de données. **(0.5)** <code bash>[{ '10': 'INT', '\n': 'NEWLINE', '20': 'INT' }</code> | ||
- Ajoutez a votre fichier ''Alf.g4'' des expressions régulières pour les jetons suivants: NUMBER - tout texte contenant uniquement des chiffres et PONCTUATION - différents signes de ponctuation. Utilisez le lexer créé dans l'exercice précédent pour afficher la liste des tokens pour le texte: //Bonjour! Le TP d'ALF est de 8 a 10.// **(1p)** | - Ajoutez a votre fichier ''Alf.g4'' des expressions régulières pour les jetons suivants: NUMBER - tout texte contenant uniquement des chiffres et PONCTUATION - différents signes de ponctuation. Utilisez le lexer créé dans l'exercice précédent pour afficher la liste des tokens pour le texte: //Bonjour! Le TP d'ALF est de 8 a 10.// **(1p)** |