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...

6 réponses

  1. momo
     
    compilateur de koi
    ?
    0
    1. 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
  2. Bobinours Messages postés 2903 Statut Membre 504
     
    Un compilateur en langage C ?... C'est vague.
    Tu veux faire un compilateur pour quel langage ?

    -= Bobinours =-
    0
    1. benmlih
       
      alors... je veux réaliser un compilateur avec le langage C et qui compile un fichier écris en algorithme.
      ET merci...!
      0
  3. 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
    1. Marden
       
      voir aussi réponses à Dihame les 22 et 23/10 sur ce forum.
      0
  4. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Neo
     
    Bonjour,
    Vous pouvez toujous realiser un compilateur avec C en utilisant les outils Lex, bison et Yacc de GNU,...
    0
  7. 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