Aidez moi à mon projet

karim -  
 samar83 -
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

momo
 
compilateur de koi
?
0
benmlih
 
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   Statut Membre Dernière intervention   504
 
Un compilateur en langage C ?... C'est vague.
Tu veux faire un compilateur pour quel langage ?

-= Bobinours =-
0
benmlih
 
alors... je veux réaliser un compilateur avec le langage C et qui compile un fichier écris en algorithme.
ET merci...!
0
Marden
 
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
Marden
 
voir aussi réponses à Dihame les 22 et 23/10 sur ce forum.
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
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
Neo
 
Bonjour,
Vous pouvez toujous realiser un compilateur avec C en utilisant les outils Lex, bison et Yacc de GNU,...
0
samar83
 
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