la fin de ligne \n
la fin d’une instruction signalée par " ; " comme en langage C classique
la fonction printf() ayant 1 seul paramètre : la variable dont la valeur doit être affichée
les entiers doivent être reconnus sous la forme décimale et la forme exponentielle
notre langage C permet la déclaration de plusieurs variables dans la même ligne
(ex : int toto, mimi=5 ; ) ou la déclaration de plusieurs constantes dans la même ligne. Dans ce
cas n’oubliez pas d’allouer de la mémoire pour chacune des variables et/ou constantes déclarées
notre langage C fait la différence entre lettres minuscules et majuscules. Les mots clés du
langage seront reconnus seulement s’ils sont écrits en minuscule.
On autorise la déclaration des constantes et variables seulement à l’intérieur de la fonction
main(). Cette partie déclarative doit se trouver avant les instructions, obligatoirement.
aucune autre appel de fonction n’est reconnu par notre langage C simplifié, dans une
première phase
Dans un premier temps on va réaliser l’analyseur lexical qui détecte les mots typés
(tokens) spécifiques à notre langage (tel que décrit au-dessus) et affiche à l’écran un message
qui indique le mot typé (token) lu. Une fois l’analyseur lexicographique correctement
développé, on va modifier la spécification lexicale afin de passer ces mots typés à YACC.
Dans un deuxième temps on va réaliser l’analyseur syntaxique qui analyse notre
langage de type C et produit comme sortie le code assembleur correspondant.
Description du langage assembleur à utiliser :
Afin de vous guider dans la conception de ce compilateur, nous allons vous présenter le jeu
d’instructions orientées registre que vous allez utiliser (voir tableau 2).
Ri, Rj et Rk représentent les numéros de registres sollicités par l’instruction. @i et @j
représentent des adresses mémoire. Le format d’instruction est de taille fixe. La valeur _ est
utilisée comme bourrage (padding), dans les instructions nécessitant moins de 3 opérandes.
Autrement dit, toutes les instructions occupent 4 octets, comme illustré dans le tableau 3. Bien
entendu, les jeux d’instructions utilisés par les microprocesseurs dans le commerce ne
possèdent pas tous cette caractéristique. Nous vous proposons de concevoir un jeu
d’instructions orientées registre avec un format de taille fixe, afin de faciliter votre conception.