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