Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2586 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Créer un langage/compilateur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Créer un langage/compilateur

n°1454420
xavxavv31
Posté le 09-10-2006 à 15:46:09  profilanswer
 

Voila mon probléme:
 
Je dois créer un compilateur pour un langage spécifique qui est tout de même assez proche du C. N’étant pas un expert en informatique, auriez vous une méthode rapide et assez simple pour créer ce compilateur ?
 
J’ai 2 pistes en vue :
 - Créer un nouveau compilateur, mais je sais vraiment pas quel outil utiliser.
 - Essayer de traduire mon langage en langage c puis utiliser un compilateur standard du marché (gcc ou autre).
 
Merci pour votre aide.

mood
Publicité
Posté le 09-10-2006 à 15:46:09  profilanswer
 

n°1454454
xavxavv31
Posté le 09-10-2006 à 16:11:21  profilanswer
 

J'oublais, il faut que ca tourne sous windows ou dos.

n°1454458
bb138
La vie est belle ...
Posté le 09-10-2006 à 16:13:45  profilanswer
 

A mon avis il vaudrait mieux que tu traduises... ce sera plus simple si tu ne veux pas passer des années a essayer d'optimiser ton compilo pour telle ou telle plateforme :)
 
Sinon, sous linux, tu as de quoi faire des choses avec lex et yacc.

Message cité 1 fois
Message édité par bb138 le 09-10-2006 à 16:14:38
n°1454462
Emmanuel D​elahaye
C is a sharp tool
Posté le 09-10-2006 à 16:16:23  profilanswer
 

xavxavv31 a écrit :

Je dois créer un compilateur pour un langage spécifique qui est tout de même assez proche du C. N’étant pas un expert en informatique, auriez vous une méthode rapide et assez simple pour créer ce compilateur ?
 
J’ai 2 pistes en vue :
 - Créer un nouveau compilateur, mais je sais vraiment pas quel outil utiliser.
 - Essayer de traduire mon langage en langage c puis utiliser un compilateur standard du marché (gcc ou autre).


Je te conseille d'apprendre à créer un compilateur grâce aux méthodes et outils classiques décits dans le Red Dragon Book.
 
http://en.wikipedia.org/wiki/Compi [...] _and_Tools
http://www.amazon.com/Compilers-Pr [...] 0321486811
 
C'est la référence incontournable. Je ne sais pas si il existe en français.
 
Par contre, ça va te prendre un peu de temps, car il y a pas mal de principes à assimiler, à commencer par définir correctement un langage...


Message édité par Emmanuel Delahaye le 09-10-2006 à 16:20:09

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1454464
Emmanuel D​elahaye
C is a sharp tool
Posté le 09-10-2006 à 16:20:55  profilanswer
 

bb138 a écrit :

Sinon, sous linux, tu as de quoi faire des choses avec lex et yacc.


Existent aussi sous Windows console sous la forme GNU (Flex et Bison)...


Message édité par Emmanuel Delahaye le 09-10-2006 à 16:22:01

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1454465
bb138
La vie est belle ...
Posté le 09-10-2006 à 16:22:28  profilanswer
 

Je ne savais pas  :jap:

n°1454516
Zavie
Test, du travail de pro !
Posté le 09-10-2006 à 17:56:00  profilanswer
 

Citation :

Je dois créer un compilateur pour un langage spécifique qui est tout de même assez proche du C. N’étant pas un expert en informatique, auriez vous une méthode rapide et assez simple pour créer ce compilateur ?

Déjà, "créer un compilateur", ça ne va ni avec "rapide", ni avec "simple". :-)
 

Citation :

J’ai 2 pistes en vue :
 - Créer un nouveau compilateur, mais je sais vraiment pas quel outil utiliser.

Lex/Yacc (Yet Another Compiler Compiler)
Flex/Bison
 

Citation :


 - Essayer de traduire mon langage en langage c puis utiliser un compilateur standard du marché (gcc ou autre).

Ca (ou au moins vers le langage intermédiaire utilisé par gcc), c'est à priori c'est de toute façon la méthode la plus rapide si tu dois aller jusqu'à l'assembleur.
 
Toutefois ça paraît assez monstreux comme projet. De quel langage s'agit-il ? Vous êtes à combien et vous disposez de combien de temps ?


---------------
Viendez vous battre à Prologin \o/
n°1454759
xavxavv31
Posté le 10-10-2006 à 11:56:42  profilanswer
 

Zavie a écrit :

Citation :

Je dois créer un compilateur pour un langage spécifique qui est tout de même assez proche du C. N’étant pas un expert en informatique, auriez vous une méthode rapide et assez simple pour créer ce compilateur ?

Déjà, "créer un compilateur", ça ne va ni avec "rapide", ni avec "simple". :-)
 

Citation :

J’ai 2 pistes en vue :
 - Créer un nouveau compilateur, mais je sais vraiment pas quel outil utiliser.

Lex/Yacc (Yet Another Compiler Compiler)
Flex/Bison
 

Citation :


 - Essayer de traduire mon langage en langage c puis utiliser un compilateur standard du marché (gcc ou autre).

Ca (ou au moins vers le langage intermédiaire utilisé par gcc), c'est à priori c'est de toute façon la méthode la plus rapide si tu dois aller jusqu'à l'assembleur.
 
Toutefois ça paraît assez monstreux comme projet. De quel langage s'agit-il ? Vous êtes à combien et vous disposez de combien de temps ?


 
C'est justement ca le problème, il s'agit d'un langage qui n'existe pas. En gros c'est du C "simplifié" avec quelques truc différent comme les noms des boucles. Je dispose pas de beaucoup de temps, ceci n'étant pas la partie principale du projet. Je pense donc que je vais le traduire en C. Justement, à ce sujet, ya une méthode particulière pour faire cette traduction?
 
Idéalement, faudrait que j'arrive à générer une DLL avec mon compilateur ainsi obtenu (traduction en C + compilo C). Je rappel que ca doit tourner sous Windows. Quelqu’un à une idée de quel compilo C me permettrais de faire ca. Si possible version gratuite.
 
 

n°1454768
Zavie
Test, du travail de pro !
Posté le 10-10-2006 à 12:11:10  profilanswer
 

Citation :

C'est justement ca le problème, il s'agit d'un langage qui n'existe pas. En gros c'est du C "simplifié" avec quelques truc différent comme les noms des boucles. Je dispose pas de beaucoup de temps, ceci n'étant pas la partie principale du projet. Je pense donc que je vais le traduire en C. Justement, à ce sujet, ya une méthode particulière pour faire cette traduction?

Si ce langage est suffisamment proche du C, tu as peut-être moyen de t'en tirer en faisant de simples remplacements de chaînes pour transformer le fichier source en C valide. Sinon il faudra passer par un l'artillerie classique lexer/parser pour revenir à du C. Entre les deux il reste la possibilité de faire un parseur à la main (flex et bison étant assez lourds).


---------------
Viendez vous battre à Prologin \o/
n°1454833
xavxavv31
Posté le 10-10-2006 à 14:40:12  profilanswer
 

Zavie a écrit :

Citation :

C'est justement ca le problème, il s'agit d'un langage qui n'existe pas. En gros c'est du C "simplifié" avec quelques truc différent comme les noms des boucles. Je dispose pas de beaucoup de temps, ceci n'étant pas la partie principale du projet. Je pense donc que je vais le traduire en C. Justement, à ce sujet, ya une méthode particulière pour faire cette traduction?

Si ce langage est suffisamment proche du C, tu as peut-être moyen de t'en tirer en faisant de simples remplacements de chaînes pour transformer le fichier source en C valide. Sinon il faudra passer par un l'artillerie classique lexer/parser pour revenir à du C. Entre les deux il reste la possibilité de faire un parseur à la main (flex et bison étant assez lourds).


 
En faisant des remplacements, le problème est que les erreurs de compilations seront sur le langage C et non sur le langage d'origine.
 
Pour bison et flex, j'ai déjà commencé à regarder. Ca me parait assez lourd à utiliser. Et pour les erreurs de compilation, ca serra la même chose non ?

mood
Publicité
Posté le 10-10-2006 à 14:40:12  profilanswer
 

n°1454838
Chaos Inte​stinal
Posté le 10-10-2006 à 14:51:26  profilanswer
 

xavxavv31 a écrit :

Pour bison et flex, j'ai déjà commencé à regarder. Ca me parait assez lourd à utiliser. Et pour les erreurs de compilation, ca serra la même chose non ?


 
bison et flex sont un des moyens les plus "légers" à ma connaissance pour écrire un compilateur.
Au niveau des messages d'erreur, ils porteront bien sur la grammaire de ton langage, pas sur celle du C.
 
Mais très honnêtement, écrire un compilateur est quelque chose de difficile, qui demande de solides connaissances théoriques en théorie des langages. C'est absolument pas "anodin" comme boulot. C'est généralement un projet de plusieurs mois en cursus d'ingé, avec les cours qui vont bien.
 

n°1460710
xavxavv31
Posté le 19-10-2006 à 16:21:16  profilanswer
 

Bon, j'ai pas le choix, va falloir que je passe par Flex et Bison. J'ai a peut prés compris comment ca marche. Du coup il m'est venu une idée. Si j'arrive à récupérer une grammaire C écrite pour flex et Bison, mon langage ressemblant fortement au C, je devrais pas avoir trop de modifications à apporter. Du coup ma question :
Connaissez vous un endroit ou je peux trouver une grammaire du langage C pour Flex et Bison?

n°1460823
Emmanuel D​elahaye
C is a sharp tool
Posté le 19-10-2006 à 18:01:17  profilanswer
 

xavxavv31 a écrit :

Connaissez vous un endroit ou je peux trouver une grammaire du langage C pour Flex et Bison?

Dans la norme ?
 
www.open-std.org/jtc1/sc22/wg21/do [...] /N1124.pdf  
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Créer un langage/compilateur

 

Sujets relatifs
Comment créer un fichier avs (avisynth) avec vb?Créer exe qui installe fond ecran
Aide pour creer un site internetcréer un site comme priceminister
Traduction auto d'un algo en langage CCréer un groupe et un utilisateur
Créer une frame dans une cellule de tableauCréer un fichier RSS personnalisé à partir d'un RSS existant
créer un répertoire[MYSQL] [RESOLU] avec UNION, comment "créer" un champs ?
Plus de sujets relatifs à : Créer un langage/compilateur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR