2010-11-06 3 views
0

Je tente de créer un interpréteur de langage simple pour une tâche de devoir dans PLT Scheme (Racket). Pour le suivi des liaisons de variables, je n'arrive pas à créer et à mettre à jour un environnement qui suit les variables affectées et leurs valeurs. Dans le MIT Scheme Reference, j'ai trouvé des informations sur les environnements étant des objets de première classe, mais en utilisant les commandes listées ici (comme lié à l'environnement?) ne fonctionnent pas dans PLT Scheme.PLT Scheme - Suivi des liaisons de variables d'environnement

Quelle est la meilleure façon d'y arriver est système sans utiliser laisser ou tout comme impératif (!) fonctionnalité?

Répondre

2

Si vous créez simplement un interpréteur dans Scheme, vous pouvez créer votre propre structure de données d'environnement, éventuellement sous forme de liste d'association: ((var1 val1) (var2 val2) (var3 val3)) et ainsi de suite. Il est plus simple de faire circuler et de mettre à jour l'environnement sous forme de liste, plutôt que de traiter de l'implémentation d'environnements d'un schéma particulier.

+0

J'ai fini le problème plus tôt aujourd'hui, et c'est la solution que j'ai trouvée. – XBigTK13X

0

Rechercher dans les documents pour quelque chose autour de namespace functionality.

+0

J'apprécie le lien car il va sans doute m'aider dans le futur. Cependant, tout appel à des procédures liées à l'espace de noms entraîne également une erreur PLT Scheme avec 'référence à un identificateur non défini: [nom de la procédure]' – XBigTK13X

+1

De toute évidence, la création de votre propre interpréteur est très différente de celle des espaces de noms de raquette. Vous voudrez utiliser n'importe quelle structure de données qui correspond au travail comme les alists qui ont été mentionnés ci-dessus ou tables de hachage, ou un certain nombre d'autres solutions. Vous utiliseriez des espaces de noms lorsque vous voudriez faire des tâches de réflexion - comme définir une nouvelle langue * basée sur * Racket (qui se trouve être un langage qui rend cela très facile). –

Questions connexes