Question

Dans mes efforts constants pour étancher ma soif éternelle de connaissances en programmation, j'ai eu l’idée d’essayer d’écrire un langage de programmation (du moins pour le moment) simple compilé en bytecode. Le problème est que je ne connais pas la première chose à propos de la conception de la langue. Quelqu'un a-t-il des conseils sur une méthodologie pour créer un analyseur et sur les fonctionnalités de base que chaque langue devrait avoir? Quelle lecture recommanderiez-vous pour la conception de la langue? À quel niveau dois-je viser? Est-il irréaliste d’espérer pouvoir inclure une fonctionnalité permettant de créer du bytecline en ligne d’une manière similaire à gcc permettant à l’assembleur en ligne? En voyant que je code principalement en C et en Java, ce qui serait mieux pour écrire du compilateur?

Était-ce utile?

La solution

Il y a tellement de façons ...

Vous pouvez regarder dans les langues de pile et Forth. Ce n'est pas très utile lorsqu'il s'agit de concevoir d'autres langages, mais c'est quelque chose qui peut être fait très rapidement.

Vous pouvez regarder dans les langages fonctionnels. La plupart d'entre eux sont basés sur quelques concepts simples et ont une analyse syntaxique simple. Et pourtant, ils sont très puissants.

Et, ensuite, les langues traditionnelles. Ils sont les plus difficiles. Vous aurez besoin de vous familiariser avec les analyseurs lexicaux, les analyseurs syntaxiques, les grammaires LALR, les grammaires LL, EBNF et les langages normaux, juste pour aller au-delà de l'analyse.

Cibler un bytecode n’est pas simplement une bonne idée; agir autrement est simplement insensé et surtout inutile dans un exercice d’apprentissage.

Faites-vous une faveur et recherchez des livres et des tutoriels sur les compilateurs.

C ou Java suffiront. Java présente probablement un avantage, car l'orientation des objets convient parfaitement à ce type de tâche. Ma recommandation personnelle est Scala. C'est un bon langage que de faire ce genre de chose et cela vous apprendra des choses intéressantes sur la conception de la langue en cours de route.

Autres conseils

Vous voudrez peut-être lire d'abord un livre sur les compilateurs .

Pour bien comprendre ce qui se passe, vous voudrez probablement écrire votre code en C.

Java ne serait pas un mauvais choix si vous vouliez écrire un langage interprété, tel que

Je recommande de lire les livres suivants:

ANTLR

Modèles de conception de langage

Cela vous donnera des outils et des techniques pour créer des analyseurs, des lexeurs et des compilateurs pour des langages personnalisés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top