Je maîtrise pas mal de C, C++ et VB, et j'aimerais maintenant créer mon propre langage de programmation.
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 :
Source : http://www.developpez.net/forums/d27022 ... rammation/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
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 ). Par exemple,
deviendraisC++
if (continuer)
{
}
from scratch me parait trop compliqué à utiliser et j'ai dors et déjà les outils lex et yacc (maintenant flex et bison).Mon C.fr
si (continuer)
{
}
Pour la suite, quelqu'un pourrait-il me donner des explications complètes sur la démarche à suivre ? (avec des liens siou plait )