Créer un langage de programmation

Parlez ici de tout et de rien, dans la limite du raisonnable.
Répondre
Avatar du membre
Chaos-rising
Messages : 29
Enregistré le : 04 déc. 2010 21:09
Compte LegTux : Chaos-Rising
Contact :

Créer un langage de programmation

Message par Chaos-rising »

Bonjour tout le monde,

Je maîtrise pas mal de C, C++ et VB, et j'aimerais maintenant créer mon propre langage de programmation. :ugeek:

J'ai fait des recherches sur Google mais les réponses ne sont pas très claires. Voici la réponse la plus complète que j'ai trouvé jusqu'à maintenant :
Alors, tu souhaites créer un langage de programmation, c'est quelque chose de réellement difficile. Ca dépend à quel point du souhaite le créer.

Tu as déjà une grosse étape qui va consister à Compiler ton langage source vers un langage cible de plus bas niveau. Il faut définir le langage cible pour essayer de voir à quel point cela sera difficile (par exemple en C, en C++, ou en assembleur).

Dans la phase de compilation, il y a plusieurs étapes : analyseur lexical (implémentable par un automate normal), analyseur syntaxique (implémentable par un automate à pile). Pour réaliser ceux-ci, tu peux utiliser des bibliothèques tout fait (disponible en C, java ou encore camL) tel que lex et yacc. Je viens de parler d'analyse syntaxique, cela requiert de déterminer la grammaire de ton langage (ce qui implique de connaître la théorie des langages également)
Connaissance requise : Automate, automate à pile, théorie des langages (grammaires), techniques d'analyse syntaxique et lexical

Ensuite vient la partie d'analyse sémantique, il n'y a, à ma connaissance, aucune bibliothèque permettant d'automatiser cela (il faut connaître certaines notions supplémentaires, tel que : table des chaines (implémentable par une table de hachage), table des symboles).
Il faut donc connaître les notions de : analyse sémantique, table des symboles

Ensuite, ça dépend un peu du langage cible. Tu peux par exemple convertir ton code en C.
Parfois, on le convertit en code 3 adresses (dans ce cas, il y a des phases d'optimisation complexes). Puis en code assembleur (il y a encore des phases d'optimisation poussées et complexes).

Si ton langage de départ est un langage de type fonctionnel ou logique, c'est encore plus compliqué. Il y a énormement de techniques pour rendre ce type de langage en langage impératif (d'autres sauront mieux te préciser ce point).



Il y a des cours sur la théorie de la compilation en ligne (dans théorie des langages) :
http://general.developpez.com/cours/

Suivi les termes que j'ai mis en gras, tu verras le boulot que tu as à faire pour réaliser ce que tu souhaites. Et même en sachant ceci, ce n'est pas dit que ton langage soit bien (c'est à dire, performant, portable, disposant d'une bibliothèque standard assez complète, et même innovante). Mais ça fait un très bon exercice, même si c'est pas complet et pas innovant
Source : http://www.developpez.net/forums/d27022 ... rammation/

Je ne comprend pas tout dans ce message.

Au niveau de mon objectif, j'aimerais créer un langage comme le C++ mais avec des instructions en français (je l'appellerai C.fr :lol: ). Par exemple,
C++

if (continuer)
{

}
deviendrais
Mon C.fr

si (continuer)
{

}
from scratch me parait trop compliqué à utiliser et j'ai dors et déjà les outils lex et yacc (maintenant flex et bison).
Pour la suite, quelqu'un pourrait-il me donner des explications complètes sur la démarche à suivre ? (avec des liens siou plait :mrgreen: )
Chaos-Rising
Je pompe les ressources de LegTux :twisted: : (avant)

Le seul site qui me reste
surolympia.legtux.org
snif... je ne pompe plus les ressources de LegTux :(
adrao
Messages : 10
Enregistré le : 11 févr. 2011 21:24
Compte LegTux : adrao

Re: Créer un langage de programmation

Message par adrao »

Avant de vouloir créé un langage, je te conseille d'apprendre l'assembleur, qui te permettera d'avoir une meilleur connaissance globale de la mémoire et du proco (mais cela n'est pas obligatoire).

En faite c'est plus simple si tu veux faire un langage qui n'est pas compilé (donc interprété comme le Perl ou le python par exemple).

Tu fait un programme C qui prend en argument un fichier (écris dans ton langage donc), ensuite tu récupère ce qu'il y a dans le fichier, et avec quelques mises en oeuvre de split et compagnie tu "traduit" en C, ce qu'il est écris dans le fichier et tu exécutes.

Mais si tu veux faire quelque chose de complet tu vas avoir du mal. Rien que pour faire des variables similaire au Perl (les scalaires), tu devras essayé de detecter le type de donnée qui y est entrer, et créé une variable C en fonction de cette donné etc....


En revanche si tu veux vraiment faire un langage compilé, (le code source est traduit en langage machine), lis des livres du genre "Engineering a Compiler", de Keith Cooper et Linda Torczon, ou "Advanced Compiler Design and Implementation", de Morgan Kaufmann, pour bien comprendre le fonctionnement d'un compilateur (tu devras en créé un !).


Troisième hypothèse, et qui convient dans ton cas ; si tu veux juste faire une traduction du C++, tu peux en quelque sorte "ajouter" une étape à la compilation, en traduisant tout les "si{ }", en "if{}" et cetera desunt, pour pouvoir profiter ensuite du compilateur traditionnel du C++.


Après je parle très théoriquement, je ne me suis jamais vraiment lancé.


Enfin bref, bonne chance. Je suis à tout entière disposition pour d'autres questions :)
Avatar du membre
Chaos-rising
Messages : 29
Enregistré le : 04 déc. 2010 21:09
Compte LegTux : Chaos-Rising
Contact :

Re: Créer un langage de programmation

Message par Chaos-rising »

En fait je voulais créer mon propre compilateur mais je crois que je vais abandonner...
too hard :oops:
Chaos-Rising
Je pompe les ressources de LegTux :twisted: : (avant)

Le seul site qui me reste
surolympia.legtux.org
snif... je ne pompe plus les ressources de LegTux :(
Avatar du membre
Zététix
Messages : 19
Enregistré le : 06 avr. 2011 11:48
Compte LegTux : inexplicable
Contact :

Re: Créer un langage de programmation

Message par Zététix »

C'est sûr que c'est quelque chose de vraiment difficile. D'ailleurs, c'est peut-être ce qu'il y a de plus dur en informatique :shock: ! Le mieux est de commencer par l'assenbleur car enfait, un compilateur traduit ton code source en langage assembleur qui en ensuite... assemblé donc traduit en binaire. Bon je dis ça mais apprendre ce langage est très complexe (je n'ai pas eu le courage de m'y plonger alors je parle...).

Mais au fait, pourquoi veux-tu créer ton propre langage ? C'est plutôt une drôle d'idée ça :D !!
Vous aimez les mystères ? Visitez http://www.sitedelinexplicable.fr !!
adrao
Messages : 10
Enregistré le : 11 févr. 2011 21:24
Compte LegTux : adrao

Re: Créer un langage de programmation

Message par adrao »

Avec les bons tutoriels, l'assembleur n'est plus aussi compliqué à assimiler ! Surtout avec la syntaxe MASM (le plus répandu, pendant longtemp le seul ^^), qui permet d'utiliser des macros, facilitant elles même (sans alourdir le code), la programmation en asm, tel un langage de haut niveau.

Bref, voilà un tutoriel très très bon , très simple, qui te donnera même quelques notions en gestion de mémoire & compagnie : http://fat.lyua.org/data/AsmNoteworthy.pdf

141 pages ==> Bonne lecture !
Avatar du membre
Chaos-rising
Messages : 29
Enregistré le : 04 déc. 2010 21:09
Compte LegTux : Chaos-Rising
Contact :

Re: Créer un langage de programmation

Message par Chaos-rising »

Merci pour le pdf adrao ;)
En fait je veux créer un langage avec des instructions en français (genre C.fr) pour les jeunes programmeurs qui trouvent l'anglais difficile à maîtriser. Et aussi pour enrichir mes connaissances en informatique 8-)
Chaos-Rising
Je pompe les ressources de LegTux :twisted: : (avant)

Le seul site qui me reste
surolympia.legtux.org
snif... je ne pompe plus les ressources de LegTux :(
Avatar du membre
Zététix
Messages : 19
Enregistré le : 06 avr. 2011 11:48
Compte LegTux : inexplicable
Contact :

Re: Créer un langage de programmation

Message par Zététix »

Ah ouais c'était ça ton idée !! Je n'y aurais pas pensé. Serais-tu anglophobe :oops: ? Non sérieusement je trouve que c'est une bonne idée. Bon courage alors (je le répète y'a du boulot :ugeek: )
Vous aimez les mystères ? Visitez http://www.sitedelinexplicable.fr !!
Avatar du membre
shudacr
Messages : 109
Enregistré le : 12 mars 2011 19:05
Compte LegTux : shudacr
Localisation : Nantes
Contact :

Re: Créer un langage de programmation

Message par shudacr »

Hum ! Difficile, enfin ce langage faciliterai la vie de beaucoup de programmeur ! Bonne chance !
* Ancien info-graphiste *
* Gestionnaire des sites *
12hert
Messages : 1
Enregistré le : 16 janv. 2015 13:03

Re: Créer un langage de programmation

Message par 12hert »

Je pense qu'il faut avoir une bonne base
Répondre