2010-05-27 5 views
5

Je veux créer un langage de programmation expérimental très simple. Quelles sont les ressources que je peux consulter pour avoir un aperçu du processus de création d'un langage interprété. Je vais utiliser C++ pour construire et compiler l'interpréteur.Quel est le processus de création d'un langage interprété?

+1

Celui-là est un peu trop spécifique à LISP. –

+1

@Neil: bien que similaire, ce n'est pas vraiment un doublon - il pose des questions sur un interpréteur Lisp, et les réponses sont aussi exclusives à Lisp. Alors que le langage de l'OP * pourrait * être assez semblable à Lisp pour ceux qui postulent, il n'y a aucune certitude. –

+0

En relation: http://stackoverflow.com/questions/1669/learning-to-write-a-compiler –

Répondre

4

Vous devez implémenter à la fois un analyseur et un interpréteur.

Il existe un grand livre de texte libre appelé "Langages de programmation: Application et interprétation" qui utilise le schéma pour construire des interprètes de plus en plus complexes. Il constitue également une excellente introduction aux fonctionnalités du langage de programmation.

Check it out ici: http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/

Si le schéma est pas votre tasse de thé, il peut être intéressant de regarder dans.

+2

heh Scheme et C++ sont un long chemin à part – Earlz

+0

Wow, cela ressemble à un très bon livre +1 pour le lien –

+0

I comprendre le C++ et le schéma ne sont pas proches les uns des autres sur le spectre des langages, mais l'approche que ce livre prend avec Scheme peut amener le demandeur à en apprendre davantage sur les principes sous-jacents de la conception du langage. – Ben

0

Jetez un coup d'œil à l'analyseur syntaxique LL de la bibliothèque boost.

2

A quelques pas:

d'abord, construire l'analyseur. Et lexer C'est vraiment facile à faire avec des outils communs tels que lex et yacc, ou en utilisant un framework plus moderne tel que Antlr (ce que je recommande). Ces outils génèrent du code source pour votre langue cible que vous pouvez ensuite compiler et inclure dans votre projet. Lexer et parser construiront la représentation interne du fichier source.

Il y a différentes façons d'aborder ceci:

  1. Dans le modèle bytecode, le fichier source est compilé dans un langage interne à faible niveau, pour lequel vous écrivez un interprète bytecode qui exécute directement les opérations . C'est ainsi que fonctionnent Perl et les langages .NET, par exemple.
  2. Dans le modèle de l'arborescence d'objets, le fichier source est compilé dans une arborescence d'objets où chaque objet sait comment s'exécuter. Une fois l'analyse terminée, vous appelez simplement Exec() sur l'objet racine (qui à son tour appelle Exec() sur ses enfants, etc.). C'est essentiellement la méthode que j'utilise pour mon langage spécifique au domaine interprété Phonix.
0

Pour créer un langage interprété, vous devez créer deux choses:

  • Une définition formelle de la grammaire de la langue
  • Un analyseur qui peut lire et interpréter la langue

Une fois que vous avez défini la langue elle-même, plusieurs outils sont disponibles pour vous aider à créer un analyseur de langue. Les outils classiques sont lex et yacc, et leurs versions open-source flex et bison.

Questions connexes