let a = 1 in

Transcription

let a = 1 in
Université de Nice-Sophia Antipolis
Compilation - Semestre 6
Licence d'Informatique - 3e année
20132014
TD N◦ 7
Arbres abstraits et évaluation
Soit le langage (étendu) vu au TD n◦ 06 permettant d'écrire des expressions de la forme
let a = 1 in
(let b = 2 in a + b) *
(let c = 3, d = 4 in a - c + d)
qui donne 6 comme résultat ((1 + 2) ∗ (1 − 3 + 4)). Mais
let a = 1 in
(let b = 2 in a + b) *
(let c = 3 in b - c)
let a = 1 in
let i = 2, j = 3, k = 4, i = 5 in i + j + k
ache des erreurs car b n'est pas dénie dans le
let i = 2 in . . . .
let c = 3 in . . .
, et i est dénie 2 fois dans le
Une grammaire possible est (ID, NB, LET, IN sont des terminaux) :
lets : let | lets let ;
let : LET aff | LET affs IN lexpr ;
affs : add | affs ',' aff ;
aff : ID '=' expr ;
lexpr : LET affs IN lexpr | expr ;
expr : expr '+' terme | expr '-' terme | terme ;
terme : terme '*' fact | | terme '/' fact | fact ;
fact : ID | NB | '(' lexpr ')' ;
1. Donnez en C les arbres abstraits permettant de représenter ces expressions.
2. Donnez les types des attributs des symboles et munir la grammaire des actions sémantiques pour
construire l'arbre abstrait
3. Écrire l'
valuation de l'arbre abstrait. Vous supposerez qu'il existe une structure de donnés
comme dans le cours.
Map

Documents pareils