Differences

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

Link to this comparison view

alf:teme:tema3_java [2023/05/12 12:52]
amalia.simion [Objet de contexte]
alf:teme:tema3_java [2023/05/12 13:21] (current)
amalia.simion [Devoir 4 - Sémantique]
Line 1: Line 1:
-====== Devoir ​- Sémantique ======+====== Devoir ​- Sémantique ======
  
 ===== Information ===== ===== Information =====
  
 <note important>​ <note important>​
-Date limite: ** le 22 mai, 23h55 ** \\+Date limite: ** le 26 mai, 23h59 ** \\
 Points: ** 2 points ** hors de la note finale \\ Points: ** 2 points ** hors de la note finale \\
-Téléchargez le devoir: [[https://​classroom.github.com/​a/​P2YgEyZL ​| GitHub Devoir ​4]] \\+Téléchargez le devoir: [[https://​classroom.github.com/​a/​QARUXoMs ​| GitHub Devoir ​3]] \\
 Téléchargement tardif: ** 1 point / jour ** (maximum 3 jours) \\ Téléchargement tardif: ** 1 point / jour ** (maximum 3 jours) \\
 </​note>​ </​note>​
Line 169: Line 169:
 <code javascript>​ <code javascript>​
 { {
-         "id": "Expression", +      ​"@class" : "org.easycompiler.ast.BinaryExpression", 
-         ​"op": "+", +      "errors" : "java.util.ArrayList", [ ] ]
-         ​"​left":​ { +      "​line"​ : 5, 
-           ​"id": "​Value",​ +      "​typeName"​ : "​integer",​ 
-           ​"type": "integer", +      ​"​left"​ : { 
-           ​"value": ​2+        "@class" : "org.easycompiler.ast.Value",​ 
-           ​"line": ​5+        "errors" : "java.util.ArrayList", [ ] ]
-           ​"symbol": ​0 +        "line" : 5
-         ​}, +        "typeName" : "​integer"​
-         ​"​right":​ { +        "value" : "​2"​ 
-           ​"id": "​FunctionCall",​ +      }, 
-           ​"​function_name":​ "number", +      "​right"​ : { 
-           ​"parameters": [], +        "@class" : "org.easycompiler.ast.FunctionCall",​ 
-           ​"​line":​ 5, +        "​errors"​ : [ "​java.util.ArrayList",​ [ ] ], 
-           ​"symbol": ​0+        "​line"​ : 5, 
-           ​"type": "integer+        "​typeName"​ : "​integer",​ 
-         ​}, +        ​"​function_name"​ : 
-         ​"line": ​5, +          ​"@class"​ : "​org.easycompiler.ast.Identifier", 
-         "symbol": 0+          "errors" : [ "​java.util.ArrayList",​ [ ] ], 
-         ​"type": "integer+          "​line"​ : 5, 
-       ​}+          "typeName" : "​number"​
 +          "title" : "number
 +        }, 
 +        "arguments" : "java.util.ArrayList", ​[ ] ] 
 +      }, 
 +      ​"op" : "ADD
 +    }
 </​code>​ </​code>​
  
Line 211: Line 217:
 ===== Liste d'​erreurs ===== ===== Liste d'​erreurs =====
  
-La liste d'​erreurs est un tableau qui contient des objets d'​erreur. L'​ordre dans lequel ces erreurs figurent dans la liste vous appartient.+La liste d'​erreurs est une liste contient des objets ​d'​erreur avec le type d'​erreur. L'​ordre dans lequel ces erreurs figurent dans la liste vous appartient.
  
-==== Format d'​objet d'​erreur ==== +Pour les types des erreurs ​s'il vous plait verifie ​l'enum **SemanticError.Type**
- +
-Chaque erreur a le format suivant: +
-<code javascript>​ +
-+
-    type: //  string with the error type +
-    line: // the line number in the source (starting at 1) +
-    elements: // items for the error, each type of error has different items +
-    text: // the error text message +
-+
-</​code>​ +
-==== Type d'​erreur ==== +
- +
-Le type d'​erreur est une chaîne avec l'​un ​des titres suivants +
- +
-=== VARIABLE_ALREADY_DEFINED === +
-L'​erreur se produit lorsqu'​une définition de variable est répétée. +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​VARIABLE_ALREADY_DEFINED",​ +
-       "​line":​ 5, +
-       "​elements":​ { +
-         "​variable":​ "​var_name"​ +
-       }, +
-       "​text":​ "​variable var_name is already defined"​ +
-+
-</​code>​ +
- +
-=== FUNCTION_ALREADY_DEFINED === +
-L'​erreur se produit lorsqu'​une définition de fonction est répétée. +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​FUNCTION_ALREADY_DEFINED",​ +
-       "​line":​ 5, +
-       "​elements":​ { +
-         "​variable":​ "​function_name"​ +
-       }, +
-       "​text":​ "​Function function_name is already defined"​ +
-+
-</​code>​ +
- +
-=== TYPE_ALREADY_DEFINED === +
-L'​erreur se produit lors de la répétition d'une définition de type (tableau ou struct). +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​TYPE_ALREADY_DEFINED",​ +
-       "​elements":​ { +
-         "​type":​ "s+
-       }, +
-       "​text":​ "type s is already defined"​ +
-     } +
-</​code>​ +
- +
-=== CLASS_PROPERTY_ALREADY_DEFINED === +
-L'erreur se produit lorsqu'​une définition d'​élément class est répétée. +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​CLASS_PROPERTY_ALREADY_DEFINED",​ +
-       "​line":​ 5, +
-       "​elements":​ { +
-         "​struct":​ "​s"​ // class_name +
-       }, +
-       "​text":​ "​struct'​s class_name element title is already defined"​ +
- +
-+
-</​code>​ +
- +
-=== ARRAY_INDEX_VALUE === +
-L'​erreur se produit lorsque ​l'index inférieur du tableau est supérieur à l'​index supérieur +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​ARRAY_INDEX_VALUE",​ +
-       "​line":​ 3, +
-       "​elements":​ { +
-         "​array":​ "​array_name",​ +
-         "​low_index":​ "​low_index_value",​ +
-         "​high_index":​ "​high_index_value"​ +
-       }, +
-       "​text":​ "Array index lower value (low_index_value) must be smaller that the upper value (high_index_value)"​ +
-     } +
-</​code>​ +
- +
-=== TYPE_RESOLUTION === +
-L'​erreur se produit lorsque le type d'une variable n'est pas déterminable (bonus uniquement). +
- +
-== Eléments == +
-<code javascript>​ +
-// variable +
-+
-    variable:​ // le nom de la variable avec le type non résolu +
-+
-// struct property +
-+
-    struct:​ // nom du type de structure +
-    property:​ // nom de l'​élément struct avec le type non résolu +
-+
- +
-</​code>​ +
- +
-=== UNDEFINED_FUNCTION === +
-L'​erreur se produit lorsqu'​un appel de fonction est effectué pour une fonction qui n'est pas définie. +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​UNDEFINED_FUNCTION",​ +
-       "​line":​ 2, +
-       "​elements":​ { +
-         "​id":​ "​function_name"​ +
-       }, +
-       "​text":​ "​Undefined function function_name"​ +
-+
-</​code>​ +
- +
-=== UNDEFINED_VARIABLE === +
-L'​erreur se produit lorsqu'​une variable non définie est utilisée. +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​UNDEFINED_VARIABLE",​ +
-       "​line":​ 3, +
-       "​elements":​ { +
-         "​variable":​ "​var_name"​ +
-       }, +
-       "​text":​ "​Undefined variable var_name"​ +
-+
-</​code>​ +
- +
-=== UNDEFINED_TYPE === +
-L'​erreur se produit lorsqu'​un type qui n'est pas défini est utilisé. +
- +
-== Eléments == +
-+
-       "​type":​ "​UNDEFINED_TYPE",​ +
-       "​line":​ 3, +
-       "​elements":​ { +
-         "​variable":​ "​type_name"​ +
-       }, +
-       "​text":​ "​Undefined type type_name"​ +
-+
- +
- +
-=== NOT_STRUCT === +
-L'​erreur se produit lorsqu'​une propriété est demandée pour une variable qui n'est pas un type de classe +
- +
-== Eléments == +
-<code javascript>​ +
-+
-        "​type":​ "​NOT_STRUCT",​ +
-        "​line":​ 13, +
-        "​elements":​ { +
-          "​type":​ "​var_name"​ +
-        }, +
-        "​text":​ "​var_name is not a struct"​ +
-+
- +
-</​code>​ +
- +
-=== NOT_ARRAY === +
-L'​erreur se produit lorsqu'​un index est demandé pour une variable qui n'est pas un tableau +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​NOT_ARRAY",​ +
-       "​line":​ 5, +
-       "​elements":​ { +
-         "​type":​ "​var_name"​ +
-       }, +
-       "​text":​ "​var_name is not an array"​ +
-+
-</​code>​ +
- +
-=== ARRAY_INDEX_TYPE === +
-L'​erreur se produit lorsqu'​un index pour un tableau n'est pas un nombre ou un symbole +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​ARRAY_INDEX_TYPE",​ +
-       "​line":​ 7, +
-       "​elements":​ { +
-         "​array":​ "​array_name",​ +
-         "​index":​ "​string"​ +
-       }, +
-       "​text":​ "Array (array_name) index must be integer or symbol"​ +
-     } +
-</​code>​ +
- +
-=== RETURN_OUTSIDE_FUNCTION === +
-L'​erreur se produit lorsqu'​une instruction de valeur (noeud de retour) est utilisée en dehors d'un message +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​RETURN_OUTSIDE_FUNCTION",​ +
-       "​line":​ 3, +
-       "​elements":​ {}, +
-       "​text":​ "value is used out of function"​ +
-+
-</​code>​ +
- +
-=== TYPE_EXPRESSION === +
-L'​erreur se produit lorsqu'​une expression a des types incompatibles +
- +
-== Eléments == +
-<code javascript>​ +
-+
-       "​type":​ "​TYPE_EXPRESSION",​ +
-       "​line":​ 6, +
-       "​elements":​ { +
-         "​op":​ "​=",​ +
-         "​to":​ "​to_type",​ +
-         "​from":​ "​from_type"​ +
-       }, +
-       "​text":​ "Type expression error to_type is from_type"​ +
-+
-</​code>​+
  
 ===== Bonus ===== ===== Bonus =====
Line 458: Line 236:
 ===== Questions ===== ===== Questions =====
  
-Si vous avez des questions concernant les devoirs, posez-les en postant un problème sur le github [[https://​github.com/​alexandruradovici/alf2018.git|repository]] avec le format de titre // [semantic] <votre titre de la question>​ //. Vous aurez besoin d'un compte github pour cela.+Si vous avez des questions concernant les devoirs, posez-les en postant un problème sur le github [[https://​github.com/​UPB-FILS-ALF/questions|repository]] avec le format de titre // [semantic] <votre titre de la question>​ //. Vous aurez besoin d'un compte github pour cela.
  
 <note warning> <note warning>
Line 464: Line 242:
 </​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/​alexandruradovici/alf2018|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 //.
  
  
alf/teme/tema3_java.1683885162.txt.gz · Last modified: 2023/05/12 12:52 by amalia.simion
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