0% ont trouvé ce document utile (0 vote)
7 vues2 pages

Analyse Syntaxique et Compilation en Pascal

Ce document présente un TD d'analyse syntaxique en compilation, dirigé par Mme Hager KAMMOUN BOUZAIENE pour l'année universitaire 2022/2023. Il contient deux exercices : le premier demande de décrire les étapes de compilation d'un programme Pascal, tandis que le second traite de la structure de contrôle switch en C ou Java, incluant des tâches sur la grammaire et l'arbre de dérivation syntaxique. Les étudiants doivent fournir des listes d'entités lexicales, des grammaires et des arbres de dérivation pour les programmes donnés.

Transféré par

lihipij319
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues2 pages

Analyse Syntaxique et Compilation en Pascal

Ce document présente un TD d'analyse syntaxique en compilation, dirigé par Mme Hager KAMMOUN BOUZAIENE pour l'année universitaire 2022/2023. Il contient deux exercices : le premier demande de décrire les étapes de compilation d'un programme Pascal, tandis que le second traite de la structure de contrôle switch en C ou Java, incluant des tâches sur la grammaire et l'arbre de dérivation syntaxique. Les étudiants doivent fournir des listes d'entités lexicales, des grammaires et des arbres de dérivation pour les programmes donnés.

Transféré par

lihipij319
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Section :PISI2/ LSI2.

Matière : Compilation.
Enseignante cours : Mme Hager KAMMOUN BOUZAIENE.
Année Universitaire : 2022/2023.

TD 2 Analyse Syntaxique
Exercice 1
On s'intéresse à décrire les différentes étapes de la compilation pour le petit programme suivant :
program calcul;
var
T : array[1..10] of integer;
S,I : integer;
begin
S:=0; (* initialisation *)
for I:= 1 to 10 do
begin
read(T[I]);
S := S + T[I]
end;
writeln(S)
end.

Dans ce but, il est demandé de :


1. Fournir la liste des entités lexicales.
2. Proposer une grammaire permettant d'engendrer le langage auquel ce programme
appartient.
3. Donner l'arbre de dérivation syntaxique associé à ce programme pour la grammaire
précédente.

Exercice 2
En C ou en Java, la structure de contrôle switch permet d'effectuer un branchement à choix
multiples. La syntaxe d'une instruction switch est :
switch (expr) {opt-label-instr-list}

où expr est une expression valide et le corps opt-label-instr-list du switch est une suite d'instructions
chacune pouvant être préfixée par un label de choix. Un label de choix est soit default soit un ou
plusieurs labels de la forme case cste : avec cste une constante du langage.
Un exemple de programme, utilisant cette instruction, est donné ci-dessous :
#define EOF -1
main()
{ int c, nwhite, nother;
nwhite = nother = 0;
while ((c=getchar()) != EOF)
switch (c) {
case ' ':
case '\n':
case '\t':
nwhite++; break;
default:

1
nother++; break;
}
printf("white space = %d, other = %d\n",nwhite,nother);
}

1. On suppose que la grammaire du langage est partiellement écrite avec des non-terminaux
cste, expr et instr qui reconnaissent respectivement les expressions constantes, les expressions
du langage, et les instructions et qui comportent au moins les règles :

expr ident cste  'char'


expr  cste instr  break ;
expr  ident++ instr  expr ;
avec char et ident des terminaux correspondant aux unités lexicales des caractères et des
identificateurs.
Compléter la grammaire pour accepter les instructions switch.
2. Donner l'arbre de dérivation syntaxique de l'instruction :
switch (c) {
case ' ':
case '\n':
case '\t':
nwhite++; break;
default:
nother++; break;
}

Vous aimerez peut-être aussi