Interpreteur d'un langage proche du rpn

Description

Salut

cette source presente un langage proche du rpn, c'est a dire que pour toute memoire, on a une pile, pas de variables, c'est special, ca ressemble au brainfuck, mais avec plusieurs types de variables, et probablement encore moins de possibilites...

comme structure conditionnelle, on trouve :

<condition>
if
<instructions>
fi

pour les boucles, on a :
<nombre>
times
<instructions>
semit

si on met un nombre negatif, alors on a une boucle infinie.

les types de donnees sont :
listes
valeurs
chaque valeur a un type parmi integer, real, boolean, ou string.

le rpn est base sur la structure de pile : quand on croise une valeur, on l'empile, quand on croise un operateur, on depile deux valeurs et on empile le resultat. exemple :
1 1 +
ca renvera 2.

4 sqrt renvera 2 aussi

j'ai pas mis beaucoup de fonctions, c'etait plus pour apprendre que pour utiliser :)

on peut manipuler les listes/piles avec les crochets :
[ les instructions qui se deroulent ici se font dans une nouvelle pile qui sera empillee dans la premiere]

les commentaires se font comme en C c'est a dire avec '
(c'est de l'humour, ceux qui frequentent le chan irc de codes-sources comprendront)

donc les commentaires se font comme en Qbasic, c'est a dire avec '

je n'ai pas gere les caracteres d'echapements comme \t, \n, \r, voir " \" "

Source / Exemple :


pour compiler sous linux :
make
sous windows, aucune idee

pour executer sous linux :

./interpretor <fichier a interpreter>
pour debuguer :
./interpretor <fichier a interpreter> -debug

sous windows, j'en ai aucune idee

Conclusion :


au debut, j'avais code le lexer en pensant faire un lolcode, mais j'ai pense que faire ca, c'etait quand meme plus utile :)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.