Disons, par exemple, que je voulais payer quelqu'un pour créer un langage de programmation ou un langage de script pour moi. De quel type de document auraient-ils besoin pour bien comprendre ce que je veux exactement.
Je veux dire, existe-t-il des documents standard qui décrivent le nouveau langage de programmation / script en question?
Réponses:
Ce que vous devez écrire s'appelle une spécification de langue .
Il doit contenir une description de la grammaire du langage (de préférence sous forme Backus-Naur étendue ) et de sa sémantique.
Pour la dernière partie, vous pouvez soit écrire une description dans vos propres mots (mais attention à être précis) ou une sémantique formelle .
la source
Vous aurez besoin des éléments suivants:
En quoi votre langue sera-t-elle différente? Quelle est sa mission? Est-ce fonctionnel? Est-il orienté objet? Est-ce un méta-langage? Quelles sont ses caractéristiques uniques? Que donnera-t-il au monde qui n'existe pas (ou qui existe de façon laide)? Comment voulez-vous changer les choses? Est-il compilé ou interprété? Une langue DSL ou à usage général? C'est votre philosophie et dicte beaucoup sur la conception de votre langue.
Ensuite, travaillez à gratter la syntaxe et la sémantique approximatives sur papier. Ce sera votre définition sémantique ... écrire du faux code est un excellent moyen de développer vos pensées. Lisez "Le langage de programmation C" pour un excellent exemple de la façon dont cela est fait. Joue avec.
Vous devrez ensuite définir vos jetons et votre syntaxe d'une manière ou d'une autre. Les programmes les traitent ensuite en automates capables de lire des chaînes et de traiter la syntaxe. Yacc et Bison utilisent des expressions régulières et une syntaxe de style BNF pour l'analyse lexicale et syntaxique respectivement. Il existe également des outils similaires à Yacc et Bison dans d'autres langues.
Vous aurez également besoin d'une formation en théorie du langage / compilateurs pour savoir quoi ne PAS faire. Les exemples incluent des grammaires ambiguës, des problèmes de génération et de manipulation d'AST et généralement comment vous simplifier la vie. Connaître la théorie est très important. J'envisagerais de commencer par:
Compilateurs: principes, techniques et outils (Dragon Book)
Implémentation du compilateur moderne en C ou implémentation du compilateur moderne en Java
la source
99,9% du temps, la création d'une nouvelle langue est totalement inutile. Le retour sur investissement serait très probablement minime, et vous auriez simplement perdu votre temps.
Très probablement, vous pouvez utiliser Javascript comme langage de script susceptible, et il existe déjà des analyseurs pour la plupart des langues. Vous pouvez également utiliser d'autres langages de script que vous aimez si vous pouvez trouver un analyseur approprié pour eux. Les implémenter dans votre programme nécessiterait beaucoup moins de travail et aurait un plus grand retour. Les gens n'ont pas à apprendre une autre langue, ils ont juste à apprendre votre API. C'est une bien meilleure solution.
Créer une nouvelle langue est presque toujours mauvais.
la source
Vous pouvez décrire la grammaire de votre langue en BNF .
Par exemple, c'est la grammaire de Python .
la source
si vous utilisez .NET, voici quelque chose que je suis tombé sur quelque temps en arrière. Je lui ai seulement jeté un coup d'œil curieux, mais peut-être vous serait-il utile: ironie .
la source