Revisions CCMP1
Compilateur a 3 etapes
- front-end
- middle-end
- back-end
On utilise des outils:
- Le scanner
- prend en entree un fichier (Java, โฆ)
- but : reconnaitre des mots (j'ai reconnu un entier, variable โฆ)
- renvoie un token quand reconnais quelque chose
- token , token , token complement
- Le parser
- marche main dans la main avec le scanner
- tokens doivent etre connus par le scanner + parser
- check si le flux de tokens est valide par rapport a une grammaire
- il faut definir la grammaire: peut etre ambigue
TC flashbacks
- ex : Sujet Verbe Complement Point
- utilise un arbre de derivation:
- probleme: embarque tout un tas de choses inutiles
- ex :
- retourne un AST (Abstract Syntax Tree)
- rpz les differents elements du langage source
- etre capable de gerer les cas d'ambiguite (conflits shift/reduce)
- verifier que l'AST soit valide
- trouver un mecanisme pour automatiser l'AST: visiteur
- Le binder
- lier les utilisations aux declarations des variables
- faire une premiere phase de nettoyage pour etre sur que notre AST est correct
- si ce n'est pas bon : erreur de typage
- utiliser des regles d'inferences
- liage declaration-appel
- Type-checker
- verifie si le programme est semantiquement correct
- parcours l'AST
- check la coherence des types de variable
- deduction des types
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Annale Mars 2018
Visiteur
Permettent de prendre une hierarchie de classe et d'etre capable de la visiter, cad explorer chacun des elements les un a la suite des autres.
Il a egalement un traitement exclusif d'une classe: un visiteur peut visiter les enfants d'un noeud. Il a un traitement exclusif d'une classe.
Resoudre le probleme du dispatch statique/dynamique.
Appliquer les regles d'inference
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Si je suis capable de montrer que 1 est de type entier je ne fais rien. Si je suis capable de montrer que 4 est de type entier et que je suis capable de montrer que 1 est de type entier alors est de type entier
Je suis capable de montrer que 3 est de type floatant alors est de type floatant.
8.0 est de type flottant alors l'expression est de type floatant
Difference coerxicion ouvrante/retrecissante
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
- coerxicion ouvrante : prendre un type petit et le mettre dans un type plus gros
- coexircion fermante : sens inverse mais on perd de l'info
Reprise sur erreur
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
L'utilisateur peut ecrire quelque chose de invalide mais le programme est capable de nous redonner des informations sur la suite du programme. L'erreur est sur le ';', on se met en mode erreur et on continue a "manger" des tokens jusqu'a retrouver un etat stable pour afficher plusieurs erreurs (ex: retrouver la parenthese fermante).
Lire et discard les tokens jusqu'a retrouver un token valide
Construction dans un langage existant
AST
Java, C, C++ (plus de Tiger)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Liaison des noms
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Que modifie le ebreak
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Le ebreak va nous permettre de breaker sur plusieurs niveaux de boucle
- Le scanner ?
- Le parser?
- oui
- ebreak est-il une instruction ou une expression ?
- instruction car ne retourne pas de valeur
- L'AST?
- ne seras pas demander car toute la promotion ne fait pas Tiger
Problemes de typage
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Verifie qu'on ait un entier et non autre chose. Vu que le ebreak prend un argument c'est forcement une expression, hors un string est une expression. Il va falloir s'assurer dans le type checker que la valeur prise par le ebreak est un nombre.
Lier le ebreak avec un while
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
On pourrait lier le ebreak avec le while mais on ne sait pas ce qu'il y a la suite car on peut avoir des valeurs que au runtime.
Desucrage
Prendre une construction et la transformer en une autre construction
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More โ
Evaluation : QCM points negatifs