IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Théorie des langages / Compilation


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Par défaut Théorie des langages / Compilation
    Salut tout le monde,

    Je suis débutante en compilation. J'ai un projet à réaliser. Je vous demande
    de me proposer un langage à compiler. ça doit être un miniprojet que je dois
    présenter dans quelques semaines.

    Thank you in advance for your suggestions.

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    ben essaies de faire un compilateur vers une machine virtuelle pour un langage de type fonctionnel pur... (le noyau de caml par exemple)

    ensuite, si tu as le temps, tu peux ajouter des types, une optimisation sur le passage des arguments pour les fonctions à n arguments (n<>1), etc.
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Tu peux aussi faire un compilateur d'un langage genre C vers un langage 3 adresses.

    La grammaire pourrait par exemple être (syntaxe yacc) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    %token VIR PV DP FP ID NUM NOT 
    %token AND OR  
    %token PLUS MOINS 
    %token DIV STAR
    %token LOW GRT NEQ EQL 
    %token EQ 
    %token DA FA 
    %token TRUE FALSE 
    %token INT FLOAT BOOL 
    %token IF THEN ELSE REPEAT DO WHILE UNTIL
    
    
    %start prog
    
    %left AND OR  
    %left PLUS MOINS 
    %left DIV STAR
    %left LOW GRT NEQ EQL 
    
    %nonassoc THEN
    %nonassoc ELSE
    %nonassoc MUNAIRE
    
    %%
    
    prog : decl_list inst_list pv ;
    
    pv : PV | ;
    
    decl_list : decl_list decl
    | ;
    
    decl : type id_aff_list PV;
    
    id_aff_list : id_aff_list VIR id_aff
    | id_aff ;
    
    id_aff : id | affect ;
    
    id : ID ;
    
    type : INT | FLOAT | BOOL | type STAR ;
    
    inst_list : inst_list PV inst
    | inst ;
    
    inst : affect
           | cond
           | loop
           | bloc ;
    
    affect : id EQ exp ;
    
    cond : IF exp THEN inst 
    | IF exp THEN inst ELSE inst;
    
    loop : WHILE exp DO inst
    | REPEAT inst UNTIL exp ;
    
    bloc : DA prog FA ;
    
    exp :  exp OR exp
         | exp AND exp
         | exp PLUS exp
         | exp MOINS exp
         | exp STAR exp
         | exp DIV exp
         | exp EQL exp
         | exp GRT exp
         | exp LOW exp
         | exp NEQ exp
         | uop exp %prec MUNAIRE
         | DP exp FP
         | id
         | const ; 
    
    const : NUM | TRUE | FALSE ;
    
    uop : STAR | MOINS | NOT;
    C'est loin d'être une grammaire complète (il n'y a pas de nouveau typage, pas de fonction). Ca dépend du temps que vous disposez en fait et des langages utilisés.

    mais tu peux voir beaucoup de chose :
    - analyse sémantique (vérification de type, portée des variables, table des symboles)
    - production de code (à registre ou non, optimisation possible)

  4. #4
    Membre Expert
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Par défaut
    Oui, la dernière proposition me paraît beaucoup plus simple. Compiler du fonctionnel, c'est pas simple : il faut déjà être assez calé.

    Les premières années à l'ENSEEIHT viennent d'avoir un projet (Caml) portant sur un langage de dessin... ça peut aussi être intéressant pour un début.

  5. #5
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    ça peut aussi être intéressant pour un début.
    +1. Pourquoi pas un compilateur Logo ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Par défaut
    hehe Le logo me parait intéressant Thx a lot for your suggestions

  7. #7
    Membre averti
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Par défaut Cours et Travaux tratique de théorie de langage de compilation (TLC)
    Bonjour,
    je cherche un support de cours de théorie de langage de compilation avec des exercices pour faire quelque pratique

    Merci d'avance

  8. #8
    Membre Expert
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Par défaut
    Théorie des langages:
    http://general.developpez.com/cours/#generalite

    Tu trouveras également des liens intéressants dans mon cours Ocaml notamment la partie 7 et la partie 10 (en bas de page).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Théorie des Langages et Compilation: Expressions Régulières.
    Par ByteCode07 dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 29/01/2013, 17h52
  2. Théorie des langages
    Par Lucas Panny dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 18/04/2009, 02h00
  3. exercice théorie des langages
    Par abdellah 1 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 18/04/2009, 01h14
  4. Théorie des lang, compil, logique formelle
    Par tonguim dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 10/02/2009, 12h11
  5. [Etat-Transition] Relation avec les automates d'état finis vu en théorie des langages ?
    Par isma44 dans le forum Autres Diagrammes
    Réponses: 3
    Dernier message: 15/03/2007, 01h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo