• Aucun résultat trouvé

Travaux Pratiques de Traduction no7

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Pratiques de Traduction no7"

Copied!
2
0
0

Texte intégral

(1)

Travaux Pratiques de Traduction n o 7

Licence d’informatique

—2006-2007—

Table des symboles

Dans ce TP, nous allons voir comment g´ erer une table des symboles. Nous nous en servirons pour compiler des programmes contenant de petites fonctions arithm´ etiques.

On souhaite ´ ecrire des fonctions tr` es simples, prenant en param` etres des valeurs enti` eres, et retournant des expressions arithm´ etiques. Pour cela, on utilisera le mot-cl´ e function et la syntaxe suivante :

function boum(x,y)=x+y;

function rend_sept()=7;

On veut ´ egalement pouvoir d´ efinir des variables, en utilisant le mot-cl´ e var : var garder=4-boum(4,2*3)*rend_sept();

et afficher des expressions avec le mot-cl´ e print : print garder+boum(7,8);

x

Exercice 1. Table des symboles

On veut pouvoir tester si un programme est syntaxiquement correct. Pour cela, il faut v´erifier, entre autres, que les identificateurs sont correctement utilis´es. Les contraintes que l’on veut respecter sont les suivantes :

– on ne peut pas utiliser le mˆeme identificateur pour deux fonctions/variables.

Exemple de code incorrect :

function carton(x)=45*x;

var carton=45;

1

(2)

– on peut utiliser un mˆeme identificateur pour d´efinir des param`etres dans des fonctions diff´erentes. Exemple de code correct :

function trucmuche(alpha,beta)=alpha+beta;

function bidule(alpha,beta)=alpha*beta;

– les noms des param`etres doivent pouvoir masquer des noms de variables ou de fonctions. Exemple de code correct (qui devrait afficher 30) :

var a=14;

function boum(a,b)=a+b;

print boum(20,10);

– le nombre de param`etres doit ˆetre respect´e. Exemple de code incorrect : function carre(x)=x*x;

function triangle(u,v)=carre(u,v)/2;

– on ne doit pas utiliser les mots-cl´e comme noms de variables, fonctions ou pa- ram`etres. Exemple de code incorrect :

function var(print,function)=123456;

– On ne peut pas utiliser une variable ou une fonction non d´efinie. Exemple de code incorrect (si la variable piece_d_or n’a pas ´et´e d´efinie auparavant) :

var tresor=10000*piece_d_or;

1. D´efinissez une structure de table des symboles permettant de g´erer ces diff´erentes contraintes.

2. ´ Ecrivez les programmes flex et bison permettant de tester si un programme est syntaxiquement correct. En cas d’erreur, un message indiquant la nature de l’erreur doit ˆetre indiqu´e. Par exemple, l’analyse du programme suivant :

var tutu=60+titi;

function hypercube(y)=y*y*y*y;

function toto(x,y)=tutu()+hypercube(x,y);

devrait provoquer l’affichage de messages d’erreur tels que : Ligne 1: variable ’titi’ non declaree

Ligne 3: ’tutu’ est une variable et non une fonction Ligne 3: nombre de parametres incorrect pour ’hypercube’

x

Exercice 2. G´ en´ eration de code

Modifiez votre compilateur pour qu’il produise en sortie du code ex´ecutable par la machine virtuelle.

2

Références

Documents relatifs

Les trois fa¸ cons principales de calculer des ´ ecarts types et les intervalles de confiance pour les changements pr´ edits : par l’utilisation de la matrice variance-covariance

Le calcul de la plus faible pr´ econdition associ´ e ` a cette logique de Hoare modifi´ ee permet de d´ e- terminer les contraintes minimales sur les param` etres dy- namiques d’un

• Le port de Canton est en 2005 le troisi` eme port chinois en terme de trafic de marchandises avec 250 millions de tonnes de trafic, soit une progression de plus de 16% par rapport `

Comme on peut r´ ealiser tous les scores suivants en ajoutant un certain nombre de p´ enalit´ es ` a partir des diff´ erentes r´ ealisations de 12, 13 ou 14, on en d´ eduit que

La qualit´ e du g´ en´ erateur est ´ evalu´ ee au moyen du crit` ere qui stipule que le g´ en´ erateur est un bon g´ en´ erateur de nombres pseudo-al´ eatoires si on ne parvient

L’entreprise Granulex distribue un aliment pour chat dans un contenant m´ etallique dont le poids apr` es remplissage, repr´ esent´ e par une variable al´ eatoire X, est calibr´ e `

Soit elle n’est pas chez elle, soit elle ne r´ epond pas au t´ el´ ephone. Mais si elle n’est pas chez elle, alors, elle a ´ et´ e kidnapp´ ee. Et si elle ne r´ epond pas au

Soit Pierre aime Marie, soit Marie aime Pierre. Mais si Marie n’aime pas Pierre, alors Pierre n’est pas content. Une fois Pierre n’est pas content, il n’aime pas Marie. Donc Pierre