Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
1709 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Ecrire un compilateur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ecrire un compilateur

n°319606
Joel F
Real men use shared_ptr
Posté le 27-02-2003 à 18:03:58  profilanswer
 

voila, je suis en train de definir un chti langage qui gerent  
les operations vectoriels AltiVEc et j'aimerais savoir :
 
1. quel langage se prete le mieux a l'ecriture d'un compilateur ?
2. par ou commencé ? Grammaire ? ASA ?
3. qqs tutoriels sur ce sujet ?
 
Merci d'avance :)


---------------
[NumScale] [ MKM | EBay ]
mood
Publicité
Posté le 27-02-2003 à 18:03:58  profilanswer
 

n°319610
Harkonnen
Modérateur
SQL is evil
Posté le 27-02-2003 à 18:09:13  profilanswer
 

Joel F a écrit :


1. quel langage se prete le mieux a l'ecriture d'un compilateur ?


Le C Ansi
 

Joel F a écrit :


2. par ou commencé ? Grammaire ? ASA ?


Déja définit les mots clés reconnus, les différents tokens utilisés, les opérateurs, etc...
 

Joel F a écrit :


3. qqs tutoriels sur ce sujet ?


Y'a un topic de vic le viking sur la théorie des langages ou chrisbk donne un lien vers un e-book orienté pratique.


---------------
J'ai un string dans l'array (Paris Hilton) - lesblasblasdemma : Ecrire comme d'autres respirent
n°319628
Kristoph
Posté le 27-02-2003 à 18:31:57  profilanswer
 

Utilise Lex et Yacc si possible.

n°319682
Clie
Posté le 27-02-2003 à 19:36:18  profilanswer
 

Tout a fait d'accord Lex et Yacc.
flex et bison chez GNU

n°319705
nraynaud
lol
Posté le 27-02-2003 à 19:59:37  profilanswer
 

Joel F a écrit :

voila, je suis en train de definir un chti langage qui gerent  
les operations vectoriels AltiVEc et j'aimerais savoir :
 
1. quel langage se prete le mieux a l'ecriture d'un compilateur ?
2. par ou commencé ? Grammaire ? ASA ?
3. qqs tutoriels sur ce sujet ?
 
Merci d'avance :)


1) Objective Caml, c'est un problème intrinsèquement fonctionnel
2) comme tout le monde : Lex puis Yacc puis sémantique
3) heu c'est un science, les articles sur le sujet foisonnent, y'a des cours dans les facs, mais un tutorial ...

n°319706
Joel F
Real men use shared_ptr
Posté le 27-02-2003 à 20:01:29  profilanswer
 

Merci a tous :)


---------------
[NumScale] [ MKM | EBay ]
n°319800
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-02-2003 à 21:38:27  profilanswer
 

Harkonnen a écrit :


Le C Ansi
 
 


 
ça dépend de ce qu'il veut compiler :D
 
les compilateurs Pascal sont faits en Pascal, non ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°319807
Harkonnen
Modérateur
SQL is evil
Posté le 27-02-2003 à 21:44:51  profilanswer
 

antp a écrit :


 
ça dépend de ce qu'il veut compiler :D
 
les compilateurs Pascal sont faits en Pascal, non ?


Oui, mais j'ai mentionné le C Ansi car lexx et yacc recrachent uniquement un fichier en C. Et quitte à avoir le parser en C, autant avoir tout le reste du compilo, non ? [:sinclaire]


---------------
J'ai un string dans l'array (Paris Hilton) - lesblasblasdemma : Ecrire comme d'autres respirent
n°319811
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-02-2003 à 21:46:44  profilanswer
 

Ouais :)
mais bon y a pas mal de compilos qui sont écrits avec le langage qu'ils compilent, non ?


Message édité par antp le 27-02-2003 à 21:48:11

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°319812
lorill
Posté le 27-02-2003 à 21:47:21  profilanswer
 

Harkonnen a écrit :


Oui, mais j'ai mentionné le C Ansi car lexx et yacc recrachent uniquement un fichier en C. Et quitte à avoir le parser en C, autant avoir tout le reste du compilo, non ? [:sinclaire]


 :pfff:  
y'a une version python de lex & yacc, y'en a une pour elastiC, doit surement y'en avoir d'autre...
 
http://systems.cs.uchicago.edu/ply/ par exemple


---------------
Aïe, mes genoux! | Que la lumière soit
mood
Publicité
Posté le 27-02-2003 à 21:47:21  profilanswer
 

n°319818
ayachi
Posté le 27-02-2003 à 21:52:15  profilanswer
 

un très bon tutorial sous forme de TP
http://www.lifl.fr/~marquet/ens/pcp/

n°319828
nraynaud
lol
Posté le 27-02-2003 à 21:59:21  profilanswer
 

lorill a écrit :


 :pfff:  
y'a une version python de lex & yacc, y'en a une pour elastiC, doit surement y'en avoir d'autre...
 
http://systems.cs.uchicago.edu/ply/ par exemple


 
O' Caml (filé en standard), Java (JLex, JFlex et cup), Eiffel (un bison haxorisé, il semble), Haskell (happy)...
 
et tout un tas de bordel :  
http://www.first.gmd.de/cogent/catalog/lexparse.html
 
 
Donc les générateurs sont un faux problème, par-contre s'emmerder a faire un truc compliqué avec un langage merdique c'est plus un vrai problème.


Message édité par nraynaud le 27-02-2003 à 22:54:56
n°319835
Harkonnen
Modérateur
SQL is evil
Posté le 27-02-2003 à 22:03:18  profilanswer
 

lorill a écrit :


 :pfff:  
y'a une version python de lex & yacc, y'en a une pour elastiC, doit surement y'en avoir d'autre...
 
http://systems.cs.uchicago.edu/ply/ par exemple


Ben je savais pas hein [:sinclaire]
Faut dire aussi que la seule fois ou j'ai utilisé lex & yacc, c'était pendant mes études en 91, et à l'époque Python, Java et autres n'existaient pas... Et je m'y suis pas trop intéressé à nouveau depuis....


---------------
J'ai un string dans l'array (Paris Hilton) - lesblasblasdemma : Ecrire comme d'autres respirent
n°319843
nraynaud
lol
Posté le 27-02-2003 à 22:07:39  profilanswer
 

Harkonnen a écrit :


Ben je savais pas hein [:sinclaire]
Faut dire aussi que la seule fois ou j'ai utilisé lex & yacc, c'était pendant mes études en 91, et à l'époque Python, Java et autres n'existaient pas... Et je m'y suis pas trop intéressé à nouveau depuis....


 
prie pour que ça dure, c'est hyper chiant.
Ex. : y'en a beaucoup des débuggeurs qui savent s'arrêter dans un fichier yacc ? T'as jamais le mode de coloration syntaxique pour ton générateur de parser etc.

n°319844
lorill
Posté le 27-02-2003 à 22:08:29  profilanswer
 

Harkonnen a écrit :


Faut dire aussi que la seule fois ou j'ai utilisé lex & yacc, c'était pendant mes études en 91, et à l'époque Python, Java et autres n'existaient pas...  


je chipote ? je chipote pas ? allez, chipotons
 
http://fslc.usu.edu/wp/display/22/28.wimpy
 
 :whistle:


---------------
Aïe, mes genoux! | Que la lumière soit
n°319854
Harkonnen
Modérateur
SQL is evil
Posté le 27-02-2003 à 22:23:39  profilanswer
 

nraynaud a écrit :


 
prie pour que ça dure, c'est hyper chiant.


oh que oui !! c'est d'ailleurs pour ça que j'y touche plus depuis la fin de mes études, je suis calmé à vie... [:totoz]


---------------
J'ai un string dans l'array (Paris Hilton) - lesblasblasdemma : Ecrire comme d'autres respirent
n°319856
Harkonnen
Modérateur
SQL is evil
Posté le 27-02-2003 à 22:25:15  profilanswer
 

lorill a écrit :


je chipote ? je chipote pas ? allez, chipotons
 
http://fslc.usu.edu/wp/display/22/28.wimpy
 
 :whistle:  


alors ça, c'est petit.....  
 :kaola: pour la peine !! (j'avais 17 ans bordel ! et certainement d'autres préoccupations que de m'interesser à un langage encore embryonnaire ! je me faisais suffisamment chier en C !)


---------------
J'ai un string dans l'array (Paris Hilton) - lesblasblasdemma : Ecrire comme d'autres respirent
n°319858
Harkonnen
Modérateur
SQL is evil
Posté le 27-02-2003 à 22:26:45  profilanswer
 

nraynaud a écrit :

Donc les générateurs sont un faux problème, par-contre s'emmerder a faire un truc compliqué avec une langage de merdique c'est plus un vrai problème.


Je connais ton opinion sur le C et je la respecte à défaut de la partager. Ceci dit, ce n'est pas une raison pour en remettre une couche dans ce topic, c'est totalement hors sujet.


Message édité par Harkonnen le 27-02-2003 à 22:27:55

---------------
J'ai un string dans l'array (Paris Hilton) - lesblasblasdemma : Ecrire comme d'autres respirent
n°319890
nraynaud
lol
Posté le 27-02-2003 à 22:56:54  profilanswer
 


 
C'est la cata ma frappe, vous arrivez à comprendre ce que j'écris ? 'Va falloir que je fasse vérifier mon vaccin contre la polio.

n°319907
schnapsman​n
Zaford Beeblefect
Posté le 27-02-2003 à 23:35:49  profilanswer
 

nraynaud a écrit :


 
C'est la cata ma frappe, vous arrivez à comprendre ce que j'écris ? 'Va falloir que je fasse vérifier mon vaccin contre la polio.


 
Je comprends rien de ce que tu écris :whistle:


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°319973
trueslash
(╯°□°)╯︵ MMM
Posté le 28-02-2003 à 07:38:22  profilanswer
 

un bon cour de grammaire des langages :)
 
à mon avis, faut commencer par viser petit
 
tu peux peut être faire un compilateur qui fait des calcules à partir des 4 opérations de bases (+ - * /)

n°319981
Joel F
Real men use shared_ptr
Posté le 28-02-2003 à 08:37:22  profilanswer
 

c'est ce que je pense faire deja.
gérer les types de bases (bool,char,short,long,float) et
leur fournir les opérateurs scalaires de abses et leur variantes vectorielles. Ca sera deja un bon debut.
 
La spec du langage que je dois developper et deja presque terminée donc bon ...


---------------
[NumScale] [ MKM | EBay ]
n°319986
chrisbk
-
Posté le 28-02-2003 à 08:58:12  profilanswer
 

je te conseille d'investir dans une cafetiere robuste :D
 
par rapport au e-book du topic de vik, il me semble que ceux ci ne passent pas par un langage intermediaire pour effectuer la compil en asm, ce que pour ma part je te conseille plus que tres vivement
 

n°320026
western
AJMM
Posté le 28-02-2003 à 09:50:33  profilanswer
 

Harkonnen a écrit :


Oui, mais j'ai mentionné le C Ansi car lexx et yacc recrachent uniquement un fichier en C. Et quitte à avoir le parser en C, autant avoir tout le reste du compilo, non ? [:sinclaire]


Non, il y a des langages qui sont basés sur un mini-noyau ecrit en C mais le reste est défini "en interne": exemple est Haskell, certaines versions de Lisp, CLIPS/WebCLIPS, ...
Donc, rien n'empeche ...

n°320030
chrisbk
-
Posté le 28-02-2003 à 09:53:54  profilanswer
 

Harkonnen a écrit :


Oui, mais j'ai mentionné le C Ansi car lexx et yacc recrachent uniquement un fichier en C. Et quitte à avoir le parser en C, autant avoir tout le reste du compilo, non ? [:sinclaire]


 
heureusement que non :D
 
par contre je me demande si flex/yacc est quand meme ce qu'il y a de mieux (j'utilise ca parce que je connais mais les erreurs shift/reduce ou reduce/reduce qui apparaissent parfois sans trop que l'on sache pkoi sont assez agacantes).

n°320103
Joel F
Real men use shared_ptr
Posté le 28-02-2003 à 11:31:41  profilanswer
 

chrisbk a écrit :

je te conseille d'investir dans une cafetiere robuste :D
 
par rapport au e-book du topic de vik, il me semble que ceux ci ne passent pas par un langage intermediaire pour effectuer la compil en asm, ce que pour ma part je te conseille plus que tres vivement


 
Pour la cafetiere g ce ki faut :)  [:joel f]  
hmmm certes, je pensais générer du C/C++ (bicose besoin de tempalte) et de lancer un g++ sur le resultat.


---------------
[NumScale] [ MKM | EBay ]
n°320106
chrisbk
-
Posté le 28-02-2003 à 11:33:05  profilanswer
 

Joel F a écrit :


hmmm certes, je pensais générer du C/C++ (bicose besoin de tempalte) et de lancer un g++ sur le resultat.


 
ah ben la alors laisse tomber ma remarque, je cru que tu voulais generer directement de l'asm, comme les hommes, les vrais :D :D

n°389624
KrisCool
“Verbeux„
Posté le 11-05-2003 à 12:49:16  profilanswer
 

Le C Ansi n'est pratiquement jamais la meilleure solution de programmation, sauf en cas de recherche de vitesse brute.
A mon sens, une des seules utilités du C Ansi, c'est l'écriture de noyaux d'OS, pour le reste le C++ est largement préférable.
 
Pour ce qui est de l'écriture d'un compilateur, le C++ convient nettement plus que le C Ansi, sauf si tu aimes te prendre la tête à recoder de choses aussi amusantes que les arbres n-aires, et autres joyeusetés.
 
En matière de compilateurs, il y a une personne qui fait autorité, parce qu'elle a écrit le premier véritable ouvrage entièrement consacré à la programmation des compilateurs, il s'agit d'Andrew Appel, auteur de "Modern Compiler Implementation", décliné pour le C++, le Java et le ML. (plus d'infos ici : http://www.cs.princeton.edu/~appel/modern/)
L'écriture d'un compilateur fait partie de mon cursus, et selon mon prof de langages, la version ML est de loin la plus valable au niveau qualité du code proposé en exemple.
(Il existe une version de Lex pour ML au passage).
 
Après si tu veux te prendre la tête en C Ansi, peut être que tu aimes ça ;)

n°389635
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 11-05-2003 à 12:57:54  profilanswer
 

KrisCool a écrit :

Le C Ansi n'est pratiquement jamais la meilleure solution de programmation, sauf en cas de recherche de vitesse brute.
A mon sens, une des seules utilités du C Ansi, c'est l'écriture de noyaux d'OS, pour le reste le C++ est largement préférable.


 
J'incrémente :jap:  :jap:  :jap:  
 
Vu que JoelF a besoin de template, le C++ s'impose naturellement


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°389663
youdontcar​e
Posté le 11-05-2003 à 13:52:15  profilanswer
 

Joel F a écrit :

3. qqs tutoriels sur ce sujet ?

[url=http://compilers.iecc.com/crenshaw/]Let's Build a Compiler, by Jack Crenshaw  
[/url]
te guide pas à pas dans le parsing (a = 2 => variable opérateur constante), l'interprétation d'une expression (a = b + c), des niveaux de priorités (a + b * c = a + (b*c)), des structures de contrôle (for, while, ...). Ça a dix ans, c'est en pascal et ça compile du 68000, tu n'as besoin d'aucune connaissance de libs, ça se traduit très facilement en C ou autre, c'est extrèmement bien expliqué, bref un pur bonheur.

n°389914
Joel F
Real men use shared_ptr
Posté le 11-05-2003 à 21:15:03  profilanswer
 

Merci de ces réponses :D
Finalement mon etude s'est écartée de la solution
"compilateur" pour utiliser une technique de "Expression Templates".
 
Merci tout de même pour le lien, je le stocke :D
Merci a tous pour toutes vos réponses

mood
Publicité
Posté le   profilanswer
 


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

  Ecrire un compilateur

 

Sujets relatifs
[SQL] ecrire un path ds une table Pages\erreur.htm[PHP : Noob à la lutte!] Comment écrire ceci différemment ?
y'a quoi comme bon compilateur C sous win ?écrire dans un fichier
[Recherche] compilateur....Un bon compilateur Pascal
Ecrire un fichier texte sur plusieurs lignes en vb6Ecrriture d'un compilateur au depart ?
Je cherche un compilateur C gratuit pour winXP et qui supporte les berJe cherche un compilateur C gratuit pour winXP
Plus de sujets relatifs à : Ecrire un compilateur



Copyright © 1997-2014 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC