|
Postscript, PDF | Didier Rémy | Polytechnique, INRIA |
Cours (super, self) | Exercises |
|
|
|
· | Est-ce que les fonctions peuvent être locales? |
· | Est-ce que les fonctions sont des valeurs? |
|
· | Plusieurs notations sont possibles pour une même construction.
Exemple: les caractères 'a' et '\097' ou en la boucle
for qui s'exprime en fonction de la boucle while |
· | La syntaxe concrète est linéaire et utilise des parenthèses. |
|
|
|
(1 - x) * 3
a pour
représentation
|
|
|
|
|
|
| |
| |
|
|
· | r lie des variables x à des valeurs v, i.e. c'est un
ensemble de paires notées x |® v. |
· | e Î expressions et v Î IN. On note á nñ l'entier naturel associé à sa représentation n. |
|
|||||||||||||||
|
|
|
|
|
|
|
|
let
x
= 1
in
(
let
x
= 2
in
x
) +
x
,
donner:
· | Sa syntaxe abstraitre, |
· | Le résultat de son évaluation, |
· | La dérivation de l'évaluation de l'expression la plus interne. |
|
|
|
|
|
|
|
|
|
|
|
· | Fun (x,e) désigne une fonction qui à x associe l'expression e. |
· | App (e1,e2) désigne l'application d'une expression fonctionnelle e1 à une expression e2. |
|
|
|
|
r |- Fun (x, e) Þ á Fun (x, e),rñ |
|
|
|
(fun y -> x + (fun x x) y)
est x
.
En effet y
apparaît dans une contexte dans lequel elle est liée.
Par contre, x
apparaît au moins une fois dans un contexte dans
lequel elle n'est pas liée.
|
|
||||||
|
|
+ | L'évaluation paresseuse ne se combine pas bien avec des effets de bords (affectation, exception). |
- | L'évaluation paresseuse peut être simulée (manuellement) en appel par valeur en codant les glaçons comme des fonctions. |
|
|
|
|
r0; Ø |- Fun (x, e) Þ Fun (x, e) |
||||||
|
|
|
Variables remontées
|
Variables descendues
|
|
|
|
|
|
· | Tableau (e1, e2) alloue un nouveau tableau de taille la valeur de e1 initialisé avec la valeur de e2. |
· | Lire (e1, e2) lit la case (correspondant à la valeur de) e2 du tableaux (la valeur de) e1. |
· | Ecrire (e1, e2, e3) écrit la case e2 du tableaux e1 avec la valeur de e3. |
|
|
|
|
· | On profite des tableaux mutables du langage hôte. |
· | Il y a plusieurs formes de valeurs qu'il faut distinguer par un type somme. |
· | L'accès à une valeur du mauvais type produit une erreur (que le typage devra empêcher). |
· | L'accès en dehors des bornes produit également une erreur (que le typage ne détecte pas en général). |
|
|
|
|
| |||||
| |||||
|
|
· | Syntaxe Pascal. |
· | Valeur entières et booléens; ni chaînes ni flottants |
· | Des tableaux dynamiques (durée de vie infinie). Pas d'enregistrements. |
· | Les fonctions sont globales, mutuellement récursives et jamais retournées. Le résultat d'une fonction est passé en affectant la variable de même nom. |
· | Le passage d'argument est toujours en appel par valeur. |
· | Les variables sont toutes mutables. |
|
|
|
|
|
|
|
|
· | Autoriser une construction de liaison locale Let (x, e1, en) et la tradiore en des déclarations de variables au niveau la définition de fonction ou au niveau global. |
· | Autoriser les fonctions locales et les traduire en fonctions globales par remontée des variables. |
|
· | Mieux maîtriser l'ensemble de la chaîne d'un compilateur. |
· | Apporter votre solution personnelle à un problème concret. |
· | Modification légère de l'ensemble. |
· | Écriture, ré-écriture, ou modification importante d'un maillon. |
· | Quelques sujets plus indépendants demande d'écrire une autre chaîne de compilation. |
· | Un sujet qui vous plaît |
· | À votre mesure (les difficultés sont très variées). |
|
Proposez votre projet. |
This document was translated from LATEX by HEVEA and HACHA.