Differences

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

Link to this comparison view

alf:laboratoare:03_fr_java [2023/03/19 19:05]
alexandra.negoita02
alf:laboratoare:03_fr_java [2023/04/03 17:37] (current)
alexandra.negoita02 [Lexer en ANTLR4]
Line 34: Line 34:
    - Créer un nouveau projet en Intelij et assurez-vous que c'est un project type '​Maven'​. {{ :​alf:​laboratoare:​antlr-intelij-project.png?​400&​nolink }}    - Créer un nouveau projet en Intelij et assurez-vous que c'est un project type '​Maven'​. {{ :​alf:​laboratoare:​antlr-intelij-project.png?​400&​nolink }}
    - Entrez dans 'File > Settings'​ et assurez-vous que le plugin 'ANTLR v4' est active. {{ :​alf:​laboratoare:​antlr-plugin-enables.png?​400&​nolink }}    - Entrez dans 'File > Settings'​ et assurez-vous que le plugin 'ANTLR v4' est active. {{ :​alf:​laboratoare:​antlr-plugin-enables.png?​400&​nolink }}
-   - Dans le fichier '​pom.xml',​ ecrivez les lignes suivantes, pour ajouter l'​archive ANTLR dans notre projet. +   - Dans le fichier '​pom.xml',​ ecrivez les lignes suivantes, pour ajouter l'​archive ANTLR dans notre projet. <​code>​
-<​code>​+
 <​dependencies>​ <​dependencies>​
     <​dependency>​     <​dependency>​
Line 44: Line 43:
 </​dependencies>​ </​dependencies>​
 </​code>​ {{ :​alf:​laboratoare:​antlr-xml.png?​400&​nolink }} </​code>​ {{ :​alf:​laboratoare:​antlr-xml.png?​400&​nolink }}
-On doit aussi ajouter le fichier '​.jar'​ dans le project, pour etre reconnu par Intelij. Entrez dans 'File > Project Structure',​ appuyez sur le menu '​Modules'​ et puis sur le boutton '​+',​ et ajouter le fichier '​.jar'​ qui est dans le directoire '​C:​\Javalib'​. Puis, appuyez sur '​Apply'​ et '​OK'​. {{ :​alf:​laboratoare:​antlr-dependencies.png?​400&​nolink }}  +  - On doit aussi ajouter le fichier '​.jar'​ dans le project, pour etre reconnu par Intelij. Entrez dans 'File > Project Structure',​ appuyez sur le menu '​Modules'​ et puis sur le boutton '​+',​ et ajouter le fichier '​.jar'​ qui est dans le directoire '​C:​\Javalib'​. Puis, appuyez sur '​Apply'​ et '​OK'​. {{ :​alf:​laboratoare:​antlr-dependencies.png?​400&​nolink }}  
- +  - Le resulat sera: {{ :​alf:​laboratoare:​antlr-dependencies2.png?​400&​nolink }}
-{{ :​alf:​laboratoare:​antlr-dependencies2.png?​400&​nolink }}+
  
 ===== Lexer ===== ===== Lexer =====
Line 140: 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 =====
-   - 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 ​javascriptlet 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 ​javaString[] 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+   - Installez ANTLR4 globalement, ​en suivant les étapes du laboratoire. **(1p)** 
-];</​code>​ +   - 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)**
-   - Installez ANTLR4 globalement, ​ainsi que la version pour TypeScript. Attachez une capture d'​écran avec l'​exécution de la commande ''​antlr4''​ dans votre Command Prompt et une autre avec le résultat de la commande ''​npm run antlr4ts''​ dans le Terminal de Visual Studio Code. **(1p)** +
-   - Créez le programme complet présenté dans le tutoriel de ce TP (fichiers de configuration,​ fichier Alf.g4, fichier ​main.ts) et assurez-vous que son exécution est réalisée sans d'​erreurs. **(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 dictionnaire ​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: ​WORD - tout texte contenant uniquement des lettres ​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)**
    - Utilisez votre lexer pour analyser les jetons du fichier [[https://​github.com/​UPB-FILS-ALF/​TP/​blob/​main/​TP3/​text_and_numbers.txt|text_and_numbers.txt]]. Pour chaque ligne de ce fichier affichez le texte du jeton, le type, et la ligne du fichier ou il a été trouvé. **(1p)**    - Utilisez votre lexer pour analyser les jetons du fichier [[https://​github.com/​UPB-FILS-ALF/​TP/​blob/​main/​TP3/​text_and_numbers.txt|text_and_numbers.txt]]. Pour chaque ligne de ce fichier affichez le texte du jeton, le type, et la ligne du fichier ou il a été trouvé. **(1p)**
    - Ecrivez un lexer qui reconnaît un sous-ensemble du langage Python. Pour chaque point de cet exercice, utilisez comme exemple une chaîne quelconque correspondant au langage Python, pour voir si votre programme peut: **(3p)**    - Ecrivez un lexer qui reconnaît un sous-ensemble du langage Python. Pour chaque point de cet exercice, utilisez comme exemple une chaîne quelconque correspondant au langage Python, pour voir si votre programme peut: **(3p)**
alf/laboratoare/03_fr_java.1679245546.txt.gz · Last modified: 2023/03/19 19:05 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