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

cs_alinformatik Messages postés 2 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 28 mars 2011 - 17 mars 2011 à 20:02
cs_alinformatik Messages postés 2 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 28 mars 2011 - 28 mars 2011 à 21:24
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

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
17 mars 2011 à 20:51
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
0
cs_alinformatik Messages postés 2 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 28 mars 2011
28 mars 2011 à 21:24
Bonsoir,
je tiens à vous remercier infiniment, et je vous souhaite bon courage.
0
Rejoignez-nous