Bonjour à tous.
En fait j'ai 2 problèmes dont les solutions pourront me permettre de comprendre mieux mon cours de compilation:
Le premier est celui ci:
J'aimerai écrire un programme C qui me permet de retrouver la représentation fonctionnelle d'un arbre abstrait:
1- à partir de sa représentation préfixée d'une part,
2 - et de sa représentation postfixée d'autre part,
3 - en fin de sa représentation infixée.
Le deuxième est le suivant:
Je voudrais construire un compilateur pour un langage C simplifié dont la grammaire est :
CHIFFRE -> 0|1|3|4|5|6|7|8|9
LETTRE -> a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
IDENT -> LETTRE|LETTRE IDENT
NOMBRE -> CHIFFRE|CHIFFRE NOMBRE
REEL -> NOMBRE
DECLARATION -> TYPE ESPACE LISTE SEPFIN
TYPE -> int|float
LISTE -> id,LISTE|id
SEPFIN -> ;
INSTRUCTION -> DECLARATION|AFFECTATION
AFFECTATION -> IDENT OPAF EXPRESSION SEPFIN
EXPRESSION à EXPRESSION OPADD EXP1|EXP1
OPADD -> +|-
EXP1 -> EXP1 OPMUL TERME|TERME
OPMUL -> *|/
OPAF -> =
TERME -> ‘(‘ EXPRESSION ‘)’ | IDENT | NOMBRE
RESERVES -> main|int|float
PROGRAMME -> main { LISTEINS }
LISTEINS -> INSTRUCTION LISTEINS | INSTRUCTION
Ce langage permet de déclarer des variables et de réaliser des opérations arithmétiques sur ces variables. On suppose qu’une opération arithmétique ne se réalise que si les deux opérandes sont de même type et qu’il n’y a pas d’opérations unaires. Une instruction ne peut pas tenir plusieurs lignes.
J'aimerai écrire en c pour ce langage :
- Un analyseur lexical ;
- Un analyseur syntaxique produisant en sortie l’arbre abstrait du programme ;
- Un analyseur sémantique qui parcoure l’arbre abstrait et vérifie la sémantique du programme, en ajoutant éventuellement des informations dans la table des symboles.
En faisant ressortir dans les codes toutes les procédures de manipulations de la table des symboles.
Merci d'avance.
Partager