Aidez moi à mon projet

Fermé
karim - 26 oct. 2001 à 11:35
 samar83 - 30 nov. 2007 à 16:28
salut ; je doit réaliser un petit compilateur en langage C et je ne sais pas d'ou commencer .
et merci d'avance...
A voir également:

6 réponses

compilateur de koi
?
0
ok...
un compilateur qui detecte les erreurs de syntaxes et logiques dans un programme écris en algorythme et je doit réaliser ce compilateur en langage C.
ET merci...
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
28 oct. 2001 à 04:52
Un compilateur en langage C ?... C'est vague.
Tu veux faire un compilateur pour quel langage ?

-= Bobinours =-
0
alors... je veux réaliser un compilateur avec le langage C et qui compile un fichier écris en algorithme.
ET merci...!
0
Un compilateur peut à priori s'écrire dans n'importe quel langage, si celui-ci permet de générer le langage d'assemblage compréhensible par le processeur destiné à l'exécuter. Il était de tradition d'écrire une nouvelle version d'un compilateur dans le langage à compiler, même en Cobol. Rien n'interdit d'écrire en C un compilateur pour un autre langage. Lex et Yacc sont spécialement destinés à l'écriture de compilateur, pour ce qui concerne l'analyse lexicale et syntaxique du langage source.
Les entités lexicales (un entier, un entier signé, une chaîne de caractères, un identificateur, les mots-clés du langage : IF,ELSE,ENDIF,DO,...?) sont décrites dans un fichier sous une forme appropriée, et traitées par Lex qui fournit un jeu de routines en C (yylex.c). De manière similaire, on décrit la syntaxe par blocs (déclarations, instructions, ... ) puis en détail. Par exemple, une instruction d'affectation est composée d'une variable ou une variable indicée, suivie d'un opérateur d'affectation ("=" ou ":="), suivie d'une expression.
Une expression, c'est une constante, ou une variable, ou une fonction, ... suivie d'un opérateur arithmétique, suivi d'une expression (définition récursive) ... suivie d'un ";"
Les règles syntaxiques, incluant les productions (instructions en C définissant ce qu'on fait quand la règle est vérifiée ?) et le résultat de Lex, sont analysées par Yacc qui produit une routine en C (l'analyseur syntaxique à base d'automate à états finis) et même un peu plus. Quand une anomalie est détectée, on doit s'interroger si on continue (fonctionnement en mode dégradé, en général on cherche à appliquer une nouvelle règle) ou si l'on s'arrête.
On doit ensuite effectuer des contrôles de sémantique (est-ce que la variable a été déclarée, de quel type ? peut-on affecter une chaîne à un entier, et si oui, au prix de quel type de conversion ? régler le problème de priorité des opérateurs arithmétiques ou logiques, ...). Cette phase est effectuée le plus souvent en plusieurs passes (typage, rangement, ...).
Enfin, on génére le code d'assemblage, ce qui veut aussi dire qu'il faut prévoir l'assembleur, c'est-à-dire l'écrire entièrement ou partiellement . Mais ceci est une autre histoire, qui ne s'écrit pas en deux jours !!!
0
voir aussi réponses à Dihame les 22 et 23/10 sur ce forum.
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
30 oct. 2001 à 14:31
Et j'ajouterais que les 2 outils classiques de création de compilateurs sont Lexx et Yacc (gratuits).

C'est la base de nombreux compilateurs.
Ils permettent de créer son propre language en définissant la syntaxe et le lexique.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,
Vous pouvez toujous realiser un compilateur avec C en utilisant les outils Lex, bison et Yacc de GNU,...
0
je veu realiser 1 compilateur d'un langage qui rassemble à C et pascal, je veu une explication détaillée et merci d'avance
0