Differences

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

Link to this comparison view

alf:laboratoare:08 [2021/04/25 23:56]
diana.ghindaoanu
alf:laboratoare:08 [2022/05/02 19:26] (current)
diana.ghindaoanu [Exercises]
Line 1: Line 1:
-====== TP - Génération de code ======+====== TP - Génération de code ======
  
 ===== Three Address Code ===== ===== Three Address Code =====
Line 194: Line 194:
  
   - Dans un fichier **ex1.txt** écrivez le //three address code// pour les expressions suivantes (**1p**)   - Dans un fichier **ex1.txt** écrivez le //three address code// pour les expressions suivantes (**1p**)
-    * 3-5/(4+8+    * (4+2)/5-3 
-    * a = 2*7/(2-3) +    * (4+2)/5-3 
-    * e = (b+5)/(7-a)+    * e = (a-2)+(a-5)
   - Dans un fichier **ex2.txt** écrivez le //three address code// pour le programme suivant (**1p**) <code javascript>​   - Dans un fichier **ex2.txt** écrivez le //three address code// pour le programme suivant (**1p**) <code javascript>​
-if (a == 0)+if (a 0)
 { {
-  result = 'null';+  result = 'positive';
 } }
 else else
 { {
-  result = 'not null';+  result = 'negative';
 } }
 </​code>​ </​code>​
   - Dans un fichier **ex3.txt** écrivez le //three address code// pour le programme suivant (**1p**) <code javascript>​   - Dans un fichier **ex3.txt** écrivez le //three address code// pour le programme suivant (**1p**) <code javascript>​
-function ​power (base, exp)+function ​double ​(nr)
 { {
-    return ​base ^ exp;+    return ​nr*2;
 } }
- +  
-power (4/2, 5);+double ​(7/2);
 </​code>​ </​code>​
   - Téléchargez [[https://​github.com/​UPB-FILS-ALF/​TP/​tree/​main/​TP8 | la structure]] du tp. Pour les exercices suivants vous devez modifier seulement le contenu du fichier et **three_address_code.ts**. Exécutez le parser du laboratoire et écrivez un programme qui génere le three address code pour le noeud //​expression//​ et vérifiez avec le fichier //ex4.txt// (**Indice**:​ Pour nommer les variables temporaires,​ vous pouvez prendre un compteur global que vous incrémentez chaque fois que vous avez besoin d'une autre variable). (**2p**)   - Téléchargez [[https://​github.com/​UPB-FILS-ALF/​TP/​tree/​main/​TP8 | la structure]] du tp. Pour les exercices suivants vous devez modifier seulement le contenu du fichier et **three_address_code.ts**. Exécutez le parser du laboratoire et écrivez un programme qui génere le three address code pour le noeud //​expression//​ et vérifiez avec le fichier //ex4.txt// (**Indice**:​ Pour nommer les variables temporaires,​ vous pouvez prendre un compteur global que vous incrémentez chaque fois que vous avez besoin d'une autre variable). (**2p**)
Line 219: Line 219:
   - Écrivez un programme qui écrit le three address code pour le noeud //​FunctionCall//​ et testez avec le fichier //​ex6.txt//​(**2p**)   - Écrivez un programme qui écrit le three address code pour le noeud //​FunctionCall//​ et testez avec le fichier //​ex6.txt//​(**2p**)
   - Au lieu d'​écrire sur l'​écran,​ ajoutez le three address code dans un tableau. A la fin, affichez le tableau sur l'​écran. (**1p**)   - Au lieu d'​écrire sur l'​écran,​ ajoutez le three address code dans un tableau. A la fin, affichez le tableau sur l'​écran. (**1p**)
-  - **BONUS: **Pour résoudre cet exercice, on vous recommande de créer un nouveau fichier ​index_bonus.js, pour pouvoir modifier la structure sans supprimer les exercices précedents. Ajoutez le type à chaque argument dans le tableau. Les types sont: nombre, identifier, string, temp (une valeur temporaire). Pour chaque valeur temporaire, ajoutez la ligne où elle est assignée dans le three address code. Modifiez la structure du fichier index.js de facon que, si vous testez avec le fichier **ex8.txt**,​ vous obteniez le resultat suivant.(**2p**)+  - **BONUS: **Pour résoudre cet exercice, on vous recommande de créer un nouveau fichier, ''​tac_bonus.ts''​, pour pouvoir modifier la structure sans supprimer les exercices précedents. Ajoutez le type à chaque argument dans le tableau. Les types sont: nombre, identifier, string, temp (une valeur temporaire). Pour chaque valeur temporaire, ajoutez la ligne où elle est assignée dans le three address code. Modifiez la structure du fichier index.js de facon que, si vous testez avec le fichier **ex8.txt**,​ vous obteniez le resultat suivant.(**2p**)
 <spoiler AST><​code javascript>​ <spoiler AST><​code javascript>​
 { {
alf/laboratoare/08.1619384166.txt.gz · Last modified: 2021/04/25 23:56 by diana.ghindaoanu
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