Le Graal à portée de main: écrire un interpréteur

Magazine
Marque
GNU/Linux Magazine
Numéro
193
Mois de parution
mai 2016
Domaines


Résumé
Dans le précédent article, notre héros, le Lisp, a fait l’objet d’un rappel de ses innombrables qualités. Inspirés par ce modèle,  nous avons présenté rapidement le caractère modulaire que nous souhaitions donner à notre langage, puis décrit la structure de données contenant le code parsé, et enfin écrit un parseur récursif descendant. Tout ça n’est pas très utile. Nous allons remédier à ça en ajoutant un interpréteur à notre langage.


Dans ce second article, nous allons donner vie à notre langage en lui offrant un interpréteur, et un premier ensemble de fonctions arithmétiques, tout en revenant en détail sur la gestion de nos modules.

A l’issue de notre premier article, nous avions réussi à mettre au point un premier code nous permettant de transformer une chaîne de caractères en une représentation syntaxique de notre langage.

Très simplement, avec ce premier outil, nous sommes en mesure de transformer (+ 1 2 (* 3 5)) en un vecteur C++ de Sexpexpr contenant :

expr[0] // SymbolAtom +

expr[1] // RealAtom 1.0

expr[2] // RealAtom 2.0

expr[3] // Sexp contenant :  SymbolAtom *, RealAtom 3, RealAtom 4

Ce que nous aimerions faire à présent, c’est parcourir cette expression expr pour l’exécuter et obtenir le résultat suivant :

15 ;;; =(+ 1 2 (* 3 4))

C’est ce que va faire notre interpréteur.

1. Tout est dans l’interprétation

Si nous essayons de réfléchir à la manière dont nous allons exécuter...

Cet article est réservé aux abonnés. Il vous reste 95% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Utiliser Visual Studio Code pour coder en Python

Magazine
Marque
GNU/Linux Magazine
Numéro
243
Mois de parution
décembre 2020
Domaines
Résumé

Comme Batman a Robin, Rocket Raccoon a Groot, le développeur a l’éditeur de code. Sans son plus fidèle acolyte, impossible d’écrire la moindre ligne de code... d’où l’importance d’être toujours à la recherche de l’outil le plus efficace qui soit, quitte à délaisser un vieux compagnon de route...

Générez la documentation technique de vos projets Godot

Magazine
Marque
GNU/Linux Magazine
Numéro
243
Mois de parution
décembre 2020
Domaines
Résumé

Découvrons comment utiliser GDScript Docs Maker pour générer automatiquement la documentation de vos projets Godot. Nous allons voir dans cet article que l’on peut simplement, à partir de notre code et de ses commentaires, avoir une documentation toujours à jour.

Implémentation du calcul symbolique et de la dérivation en Java

Magazine
Marque
GNU/Linux Magazine
Numéro
243
Mois de parution
décembre 2020
Domaines
Résumé

Les logiciels de calcul symbolique sont relativement abondants. Pour les curieux ou ceux qui voudraient intégrer ce type de fonctionnalités dans leurs propres programmes, nous allons essayer de lever une partie des mystères des théories et des problèmes qui se cachent derrière la création de ces systèmes.

Déboguez vos codes PHP

Magazine
Marque
GNU/Linux Magazine
Numéro
243
Mois de parution
décembre 2020
Domaines
Résumé

La mise au point de programmes PHP est parfois perçue comme archaïque, car la configuration d’un environnement efficace de debugging peut s’avérer déroutante. Voici comment paramétrer une confortable installation pour profiter pleinement d’outils professionnels et maîtriser le développement local ou distant.