Projet pour réaliser un compilateur d'un simple langage

Signaler
Messages postés
2
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
28 mars 2011
-
Messages postés
2
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
28 mars 2011
-
bonjour Cher programmeurs,
pour réaliser mon tp de compilation je me suis trouver dans une situation où la demande d'aide est impérative notament que je suis suis débutant en c, j'ai choisi pour celà mon site favorable dans le domaine"codes sources", pour ne pas trop tarder, le langage qu'on va lui dévlopper un compilateur est le suivant( il est recommandé que le langage de développement soit le c ou le c++) :
Les caractéristiques du langage sont les suivantes :
1. Un identificateur (idf) commence par une lettre alphabétique Majuscule A...Z suivie
d'une suite de chiffres, lettres alphabétiques miniscules a... x ou bien un tiret _
♦ Un idf ne doit pas dépasser 25 caractères
♦ L'idf ne doit pas contenir de tirets successifs
♦ Le tiret ne doit pas apparaître à la fin de l'idf

2. Une constante entière est une suite de chiffres dont la longueur ne dépasse pas 7 caractères.
Elle peut être signée ou pas. Sa valeur doit être inférieure à 33466
3. Une constante réelle est une suite de chiffres contenant le point décimal. Elle peut être
signée ou pas. Sa taille maximale est de 15 caractères (signe et . compris). Le langage
accepte les chiffre de la forme -. 11 et 11.
4. Le programme peut contenir un ou plusieurs commentaires. Un commentaire est une suite
de caractères alphanumériques compris entre {*et *}, et ne contient pas *}
5. Les expressions peuvent être arithmétiques ou logiques (opérateurs +, *, /entière, -, -
unaire, ( ), AND , OR, NOT, <, >, <=, >=, <>, = ).
6. Un programme est de la forme suivante :
IMPLEMENTATION nom_program ;
< Partie déclaration >
BEGIN
< Partie instruction >
END.

♦ nom_program est un identificateur
♦ Tout programme se termine par un END suivi d'un point
♦ Les mots clés sont écrits en majuscule.
7. Dams la partie déclaration, on déclare les identificateurs ainsi que leur type sous la forme :
<type> liste idf ;
♦ Liste__idf peut être composée d'un seul idf ou bien d'une liste d'idfs séparés par une
virgule.
♦ II y a 4 types : INTEGER, REAL, BOOLEAN et CHAR
•» On doit déclarer aussi toute constante utilisée comme suit : CONST idf == constante;
8. Dans la partie instruction, chaque instruction se termine par un point virgule. On peut
avoir les instructions suivantes :
♦ idf ~: expression (idf et expression sont de même type)
♦ IF condition THEN instructionl ELSE instruction?.
Condition est une expression booléenne
♦ WHILE condition EXECUTE instruction
♦ FOR (idf expression! ; expression,? ; expression 3) instruction
♦ Expression! est l'initialisation, Expression 2 ; le test et expression 3 : le pas,
♦ Idf=: ADD (resp. MULT ) expl, exp2. , expn CASE condl, cood2,...., condn
Qui signifie additionner (resp. multiplier) toutes les expressions dont les conditions sont vraies. Si aucune n'est vraie idf aura la valeur 0 (respî).
Il est conseillé de définir les différents automates, gammaires du langage, etc...


. Il est demandé de réaliser les différentes étapes de compilation (sans utiliser de générateurs automatiques) : Analyse lexicale, Analyse syntaxique, Analyse sémantique, la génération de code etc..

si quelqu'un peut m'aider de n'importe quelle manière que ce soit, son aide me sera bénifique et apprécié.

2 réponses

Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
Je me permet de te proposer un projet, qui ressemble beaucoup à ce que tu cherches à réaliser:
http://www.cppfrance.com/codes/COMPILATEUR-PSEUDO-PASCAL_49318.aspx
http://0217021.free.fr/portfolio/axel.berardino/projets/compilateur-pseudo-pascal-en-cpp

D'autre liens, notamment explicatifs, sont présent dans le lien que je t'ai donné.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
2
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
28 mars 2011

Bonsoir,
je tiens à vous remercier infiniment, et je vous souhaite bon courage.