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 :

Comment créer un compilateur ?


Sujet :

Langages de programmation

  1. #41
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 396
    Points : 20 504
    Points
    20 504
    Par défaut
    Citation Envoyé par @v@lon
    N.B : je veut traduire un code source d'un nouveau language de programmation en Byte pour que le PC l'execute.
    je reprends le sujet : si tu veux te lancer dans cette aventure, faut passer d'abord par l'écriture d'un assembleur c.a.d. qui traduit un fichier source en .asm en code i86 puisque c'est le plus répandu ( quitte après à faire cela pour un autre CPU)
    Sur le site d'Intel ily a toute la doc sur les codes ( mnémoniques ) du i86.
    Commencer par compiler des .com c'est les plus simples en s'aidant de debug du dos.
    Après avoir réalisé un petit assembleur tu peux faire un interpréteur /compilateur qui traduise ton langage en asm puis assemblé en code machine...

    sinon tu peux créer ton propre langage en pseudo code interprété comme Java ou .NET , chaque instruction ayant un code: exemple if=>valeur arbitraire...

  2. #42
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 497
    Points : 6 074
    Points
    6 074
    Par défaut
    Citation Envoyé par kromartien
    Pour reprendre la question de là haut, je voudrai aussi savoir si le C est, qui est normé (ANSI 99), est également la norme pour les langages de haut niveau transcrits en langage machine.

    ( Je demande ça car comme il est extrêmement portable, ça fait beaucoup beaucoup de monde qui doit programmer en C, donc finalement ça ne laisse pas beaucoup de place aux autres langages compilés )

    Est ce que les fonctions de la librairie standard du C constituent la norme pour la transcription d'opérations algorithmiques complexes en langage machine ?
    ____________________________________________________________________________________________
    Donc en fait, pour résumer, il faut écrire ses fonctions en langage machine, et aller du plus bas vers le plus haut.
    d'abord l'addition, ensuite la soustraction, puis la multi [...]

    Mais je voudrai aussi demander : n'est ce pas vain de vouloir créer un langage de programmation sans savoir exactement ce qu'on attendra de lui ?
    N'est ce pas inutile de créer un langage de programmation qui aurait des attributs existants déjà dans d'autres langages ?
    Ne serait ce pas un gain de temps d'apprendre le langage correspondant à ses besoins plutôt que d'essayer de façon téméraire de créer un langage à partir de rien ?
    Je rajouterais qu'il serait préférable de faire une bonne framework

  3. #43
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 396
    Points : 20 504
    Points
    20 504
    Par défaut
    chez Eyrolles y'a des livres sur la théorie des compilos mais ils ne sont vraiment pas pratiques plutot très théorique

  4. #44
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    Arrêtons. Franchement, je veux bien que des gens aient de l'ambition mais de là à faire un compilo de A à Z, sans aucune notion de la théorie derrière, des graphes...

    Ce n'est pas le premier et ce ne sera pas le dernier...

  5. #45
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    je pense que ce n'est pas la peine de s'énerver... chacun a le droit d'avoir ses reves, et de vouloir les réaliser, meme si ce sera difficile

  6. #46
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Disons pour être plus... diplomate, que Panda31 emets un septiscime poli, mais néamoins justifié sur cette entreprise qui peut, vu de l'exterieur en tout cas, paraitre un peu... difficile.

    Ceci dit, le premier message a été posté le 10/02, soit il y a environ un mois et demi. Ce qui m'interesserai de savoir, afin de, pourquoi pas, dissiper les doutes de Panda (et les miens ^^) sur la viabilité de ce projet, c'est ou en est le projet aujourd'hui.

    Est-ce qu'il y a eu quelque chose de commencé ? Je ne parle pas forcement de code, mais... une ébauche de grammaire ? Une vague direction ?

  7. #47
    Provisoirement toléré
    Inscrit en
    Décembre 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 146
    Points : 70
    Points
    70
    Par défaut
    Effectivement, tous ce qui est Synthaxe (mots resérvés et structure générale du code et même du langage).... est déjà fait.
    (Notre projet à les 5 langues années avenir, alors pas la peinne de passer à la 5ème vitesse!)

  8. #48
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    C'est pas le plus dur de détecter des mots clés mais bravo pour cela. J'ai déjà créer un cross-compliateur basé sur GCC et je sais que cela ne suffit pas.

    un compilateur ne fait pas que détecter des mots clés mais il trace aussi un graphe de correspondances entre ces mots clés et leur dépendances.

    Certes, reconnaître un IF c'est bien mais reconnaître le ENDIF ou un block délimité par "{...}" c'est autre chose.

    Voilà pourquoi je suis sceptique. Je suis prêt à participer dans l'aide à ton projet mais il faudra d'abord que tu te renseignes sur les élements qu'un listing de code peut reconnaître: PLCS, imbrications, branchements, ...

  9. #49
    Membre éclairé Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Points : 823
    Points
    823
    Par défaut
    Pour ceux qui veulent s'aventurer la dedans, il y a tatoo.

    Ceci est un projet de l'Université de marne la vallé tenu par des chercheurs.

    Pour l'avoir utiliser, car celui ci est dans le cursus de mon diplome, je peux vous dire qu'il est bien efficace mais reste pour un public assez confirmé. Il faut avoir déjà pas mal de connaissance au niveau de la compilation (évidemment ) mais aussi en java car tatoo s'appuie sur ce langage.

    Voili Voilou

  10. #50
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Pour ce qui est du langage de programmation qu'on veut créer c'est pour faire des application réseaux et autres pour notre OS que nous allons créer (WAW!!), et pour le MMPROG c'est comme une sorte de Simulateur pour les troupes de l'armée (Nous), et pour le JAVA c'est pour garder le contact de tous les membres de notre chère famille (en uniforme!), et pour les autres c'est un machin de ce genre!
    Eh ben... voila qui est ambitieux. C'est assurément la meilleure méthode pour se retrouver avec un tas de bout de code dans tout les sens, et rien qui marche.

    Humilité avalon, humilité...

    Plus ce post avance et plus je me dit que ce qu'il te faut, ce n'est pas des conseils pour apprendre a créér un compilateur, ni des cours de programmation, mais des cours de bon sens.
    Vouloir creer de front un compilo, un os, un mmorpg et d'autres projets en plus à coté, c'est juste "stupide". Ca n'est pas "ambitieux", c'est "stupide". Tu n'as aucune chance (et je pèse mes mots) de réussir comme ca. Et tu as beau clamer à qui veut l'entendre que "quand on veut on peut", mais si tu veux soulever une montagne à mains nues, ben non, tu peux pas, même si tu veux très très fort.
    Chacun de ces projets, si on veut les mener à terme, necéssite un véritable engagement. Faire un compilo c'est pas juste, j'écris "if, while, else" sur le coin d'un bout de papier et hop, par magie ca devient des ptits 0 et des ptits 1.

    Si t'as bien des gars avec toi, faites une réunion, définissez vous un objectif (un seul) clair, atteignable, avec un temps de réalisation raisonnable (on se lance pas dans un projet sur 5 ans si on a pas une solide experience de ce que ca représente) et d'ici 6 mois, vous aurez tous la satisfaction de pouvoir montrer un projet fini à votre chef. Vous n'aurez plus l'air de guignols à qui on à confié un pc parce qu'on savait pas trop comment vous occuper.

    J'ai l'impression de me répéter mais faire un chouette petit tetris qui marche bien est nettement plus gratifiant que de foirer lamentablement un projet plus gros. Et ca permet d'apprendre ce qu'il faut pour aller plus loin.

  11. #51
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut
    Est ce que l'utilisation d'un langage de script-->traitement de chaînes de caractère (Perl par exemple) peut être utile pour la procédure d'analyse syntaxique ?

    Dans ce cas, il me semble qu'alors la procédure de compilation (transcription langage évolué --> binaire) devrait être effectuée séparemment.

    De mon point de vue, la création d'un langage et d'un compilateur requiert tout de même d'être un excellent connaisseur dans le fonctionnement du hardware et des processeur (assembleur, etc, et je ne parle pas des mentions sur la théorie des compilateurs faites précédemment à propos de laquelle je n'ai aucune notion).

    Le C c'est quand même pas mal pour la programmation système, ça paraîtrait difficile, à moins d'en avoir une très bonne connaissance, de vouloir créer un langage compilé et un compilateur dont les possibilités seraient équivalentes, voire supérieures.


    Bon courage !

  12. #52
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 241
    Points : 272
    Points
    272
    Par défaut
    Salut,
    je sais pas si ça va t'aider mais ya peu de temps j'ai du créer un language avec un petit parseur pour un projet au bahut.

    En gros on devait créer un langage qui permettrait a un utilisateur de programmer des robots virtuels et dans la version finale(pa notre sujet donc je pe pas éclaircir) les faire s'affronter dans une arene.
    Une fois le programme de l'utilisateur fais il le passai dans un pseudo compilateur qui vérifie que la grammaire du langage est correct, puis nous devions traduire ce programme sous une forme linéaire dont les expressions arithmétiques et logiques étaient en post-fixé.

    Je précise que le parseur(ou pseudo compilateur a été réalisé en java)

    tu pourras trouver les source http://psylox.free.fr/all/robot/

    Tu as notre grammaire et dans le dossier java tu as les class compilo,verifprogrobot qui pourront peut-etre t'aider.

    Les autres classes permettent de créer un IDE que nous avons développer en plus.

    J'espere que cela va t'aider

  13. #53
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par @v@lon
    Je me suis lancer avec des amis pour créer un nouveau language de programmation, j'ai eu de l'aide, mais maintenant j'ai besoin de vous pour m'eclairssir sur comment créer un compilateur? Quel language dois-je utiliser?
    N.B : je veut traduire un code source d'un nouveau language de programmation en Byte pour que le PC l'execute.
    Un très bonne stratégie: traduire ton programme en C, compiler le C ANSI.

    Ton problème est modifié vers un langage d'un peu plus haut niveau que l'assembleur, la traduction est simplifiée.

    Niveau performance, le C compilé est souvent bien meilleur que l'assembleur écrit à la main.

  14. #54
    Provisoirement toléré
    Inscrit en
    Décembre 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 146
    Points : 70
    Points
    70
    Par défaut
    Ben merci les amis, et ça c'est du l'aide!


Discussions similaires

  1. comment créer un compilateur pour le langage C ?
    Par mooan dans le forum Choisir un environnement de développement
    Réponses: 1
    Dernier message: 02/12/2010, 12h27
  2. [Visiteur] comment utiliser le design pattern de visiteur pour créer un compilateur
    Par katimm dans le forum Design Patterns
    Réponses: 12
    Dernier message: 18/09/2008, 10h22
  3. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30

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