This shows you the differences between two versions of the page.
alf:teme:tema2_java [2023/04/21 23:17] amalia.simion [Format AST] |
alf:teme:tema2_java [2023/05/04 19:17] (current) amalia.simion [Définition des fonctions] |
||
---|---|---|---|
Line 4: | Line 4: | ||
<note important> | <note important> | ||
- | Date limite: ** 25 avril, 23:55 ** \\ | + | Date limite: ** 7 Mai, 23:55 ** \\ |
- | Points: ** 2 points ** de la note finale \\ | + | Points: ** 3 points ** de la note finale \\ |
- | Téléchargez le devoir: [[https://classroom.github.com/a/UyBDhRP9 | GitHub Devoir 3]] \\ | + | Téléchargez le devoir: [[https://classroom.github.com/assignment-invitations/d14b0efea56ce0e34d65b76a8dd78d3c | Devoir 2]] \\ |
Téléchargement tardif: ** 1 point / jour ** (maximum 2 jours) \\ | Téléchargement tardif: ** 1 point / jour ** (maximum 2 jours) \\ | ||
</note> | </note> | ||
Line 17: | Line 17: | ||
Par exemple, dans ce cas, le fichier de sortie sera ''script.json'': | Par exemple, dans ce cas, le fichier de sortie sera ''script.json'': | ||
<code bash> | <code bash> | ||
- | node main.js script.ast script.json | + | java ... com.example.Main script.alf script.json |
</code> | </code> | ||
Dans l'exemple suivant, tenant compte du fait que le deuxième paramètre manque, le fichier de sortie sera automatiquement généré, ayant le nom ''script.ast.json'': | Dans l'exemple suivant, tenant compte du fait que le deuxième paramètre manque, le fichier de sortie sera automatiquement généré, ayant le nom ''script.ast.json'': | ||
<code bash> | <code bash> | ||
- | node main.js script.ast | + | java ... com.example.Main script.alf |
</code> | </code> | ||
Line 41: | Line 41: | ||
===== Format AST ===== | ===== Format AST ===== | ||
- | Tous les nœuds de l'AST ont le format suivant: | + | Tous les nœuds de l'AST ont le meme format. |
+ | |||
+ | Voici un example pour le script suivant: | ||
+ | |||
+ | <code> 45.5; </code> | ||
+ | |||
+ | === AST === | ||
<code javascript> | <code javascript> | ||
{ | { | ||
- | id:"node_id", | + | "@class" : "org.easycompiler.ast.Module", |
- | line: "the line where the instruction is in the file, starting at 1" | + | "line" : 1, |
+ | "title" : "program", | ||
+ | "block" : { | ||
+ | "@class" : "org.easycompiler.ast.Block", | ||
+ | "line" : 1, | ||
+ | "type" : null, | ||
+ | "statements" : [ "java.util.ArrayList", [ { | ||
+ | "@class" : "org.easycompiler.ast.Value", | ||
+ | "line" : 1, | ||
+ | "type" : { | ||
+ | "@class" : "org.easycompiler.type.Float", | ||
+ | "title" : "float", | ||
+ | "type" : "F64" | ||
+ | }, | ||
+ | "value" : "45.5" | ||
+ | } ] ] | ||
+ | } | ||
} | } | ||
</code> | </code> | ||
Line 58: | Line 80: | ||
===== Questions ===== | ===== Questions ===== | ||
- | Si vous avez des questions concernant les devoir, posez-les en postant un issue sur github [[https://github.com/upb-fils/alf.git|repository]] avec le format //[alf] <titre de la question>//. Vous aurez besoin d'un compte github pour cela. | + | Si vous avez des questions concernant les devoir, posez-les en postant un issue sur github [[https://github.com/UPB-FILS-ALF/questions|repository]] avec le format //[alf] <titre de la question>//. Vous aurez besoin d'un compte github pour cela. |
<note warning> | <note warning> | ||
Line 64: | Line 86: | ||
</note> | </note> | ||
- | Si vous souhaitez recevoir un e-mail lorsque des problèmes sont signalés ou lorsqu'il y a de nouveaux messages, accédez au site github [[https://github.com/upb-fils/alf|repository]] et cliquez sur //Watch//. | + | Si vous souhaitez recevoir un e-mail lorsque des problèmes sont signalés ou lorsqu'il y a de nouveaux messages, accédez au site github [[https://github.com/UPB-FILS-ALF/questions|repository]] et cliquez sur //Watch//. |
| | ||
Line 336: | Line 358: | ||
Voir la classe **Definition.java** et pour le type la classe **Function.java**. Si vous voulez voir le json de cette classe vous pouvez creer un instance et afficher //myObj.toJSON()// | Voir la classe **Definition.java** et pour le type la classe **Function.java**. Si vous voulez voir le json de cette classe vous pouvez creer un instance et afficher //myObj.toJSON()// | ||
[[https://github.com/UPB-FILS-ALF/devoir-3-tests/tree/master/tests/4_function|Exemple]] | [[https://github.com/UPB-FILS-ALF/devoir-3-tests/tree/master/tests/4_function|Exemple]] | ||
+ | |||
+ | <note important> | ||
+ | Le Block du statements a l'intrieur d'un fonction va avoir la ligne egale avec la ligne du token BEGIN | ||
+ | </note> | ||
Line 394: | Line 420: | ||
[[https://github.com/UPB-FILS-ALF/devoir-3-tests/tree/master/tests/5_branch|Exemple]] | [[https://github.com/UPB-FILS-ALF/devoir-3-tests/tree/master/tests/5_branch|Exemple]] | ||
+ | |||
+ | <note important> | ||
+ | Pour la branche if, les Blocks du statements a l'interieur de la branche if vont avoir la ligne egale avec le premiere statement. Si on n'a pas la branche else, le block pour else va avoir la ligne egale avec la ligne du token IF. | ||
+ | </note> | ||
==== Boucles ==== | ==== Boucles ==== | ||
Line 442: | Line 472: | ||
[[https://github.com/UPB-FILS-ALF/devoir-3-tests/tree/master/tests/3_loop|Exemple]] | [[https://github.com/UPB-FILS-ALF/devoir-3-tests/tree/master/tests/3_loop|Exemple]] | ||
+ | |||
+ | <note important> | ||
+ | Pour tous le types de boucles, le Block de statements a l'interieur de la boucle va avoir la ligne egale avec la ligne du premiere statement. | ||
+ | </note> | ||
===== BONUS ===== | ===== BONUS ===== | ||
Line 483: | Line 517: | ||
<note warning> | <note warning> | ||
- | Pour plusieurs de detailles sur l'aspect des JSON pour chaque elements, consulter le repository avec les tests: | + | Pour plusieurs de detailles sur l'aspect des JSON pour chaque element, consulter le repository avec les tests: |
[[https://github.com/UPB-FILS-ALF/devoir-3-tests|Tests repository]] | [[https://github.com/UPB-FILS-ALF/devoir-3-tests|Tests repository]] | ||
- | Chaque fichier //nom.alf// represent un fichier avec le code source qui doit etre teste, et un fichier equivalent //nom.alf.json// avec la sortie. | + | Chaque fichier //nom.alf// represent un fichier avec le code source qui doit etre teste, et les fichiers equivalent //nom.alf.json// represent la sortie. |
</note> | </note> | ||