Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INTERPRETEUR D'UN LANGAGE PROCHE DU RPN


Information sur la source

Catégorie :Applications Linux Classé sous : interpreteur, parseur, lexer, rpn, stack Niveau : Initié Date de création : 29/10/2007 Date de mise à jour : 31/10/2007 00:41:04 Vu / téléchargé: 2 992 / 77

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


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

  • 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
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 :)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

29 octobre 2007 14:58:41 :
ajout des options : -W -ansi -pedantic -g -O2 dans le makefile, et correction du code en consequence
31 octobre 2007 00:41:05 :
correction generale sur les free sur les piles et malloc et free sur les Values ajout d'une constante genre debug, qui permet de dire si on execute ou non

Commentaires et avis

signaler à un administrateur
Commentaire de Thaeron le 29/10/2007 18:01:10

C'est bien sympa et le code est beau mais à l'exécution sous valgrind ouch :
==4849== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 13 from 1)
avec Calcul.747
==4952== ERROR SUMMARY: 290 errors from 8 contexts (suppressed: 13 from 1)
avec NombresPaires.747

Dommage =x

signaler à un administrateur
Commentaire de coucou747 le 29/10/2007 21:41:36

je ne vois pas du tout d'ou ca peut sortir en fait...
t'executes ca comment ? sous quel os ?

signaler à un administrateur
Commentaire de Thaeron le 29/10/2007 21:59:27

Je suis sous linux (Slackware 12.0)
valgrind ./interpretor exemples/NombresPaires.747

http://www.sagwin.org/NoPasting/pasting/12403570091302858195.txt
Voilà le log complet de valgrind.
Tu devrais te le mettre et tester ton soft avec.

On peut voir aussi que si on fait export MALLOC_CHECK_=1 (avant de lancer interpretor) ça donne à l'exécution :

*** glibc detected *** ./interpretor: free(): invalid pointer: 0x0804d188 ***

signaler à un administrateur
Commentaire de coucou747 le 31/10/2007 00:42:13

c'est corrige (normalement)

signaler à un administrateur
Commentaire de Thaeron le 31/10/2007 00:53:24

Je confirme. Maintenant c'est impec', bravo. Plus de memory leak ni d'erreur à l'exécution et en plus ça compile en -ansi -pedantic
Beau travail =)

signaler à un administrateur
Commentaire de coucou747 le 31/10/2007 00:59:58

merci pour ce complement, et pour m'avoir indique valgrind, c'est vraiment cool comme logiciel
je dois aussi remercier zerocool pour m'avoir aide a comprendre comment les parseurs fonctionnaient, et m'avoir aide a debuger mon programme

signaler à un administrateur
Commentaire de coucou747 le 31/10/2007 01:00:21

*compl I ment

signaler à un administrateur
Commentaire de Thaeron le 31/10/2007 01:18:11 10/10

Si tu as le log de ce qu'il t'a expliqué ou des liens qu'il a pu te filer je suis preneur.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

recherche parseur pour fichier .obj [ par david666 ] Bonjour,je suis à la recherche d'un parseur de fichier .obj qui fonctionne sous GLUT.Merci. STL : Afficher le contenu d'un stack [ par UbuRoi ] J'ai essayé comme ça :vector&lt;Unit&gt;::iterator currentunit = UnitStack.top(); for (int i=0; i&lt;UnitStack.size(); i++) currentunit++; while (cur Stack overflow [ par Vaughn018 ] Bonjour,Mon programme provoque une exception stack overflow, et je ne vois vraiment pas comment réduire l'importance des objets utilisés. J'ai pu isol Utilisation de stack en C++ [ par jagdjg ] J essaie de faire un stack mais ca ne marche pas La declaration est : Stack* pile = new Stack();le push : pile-&gt;Push(strPile);le pop : strPile = pi Parseur PHP [ par Belt ] Salut à tous,quelqu'un connait-il une manière de traiter une page php par un module php puis de récuperer le résulltat dans une variable ou dans une p Interpreteur de commande AT [ par Le mauvais ] Bonjour tout le monde :)Alors voilà, je voudrais savoir où je pourrais trouver le code source (en langage C de préférence) d'un interpréteur de comman stack bluetooth windows XP SP2 MSDN [ par chandy ] Bonjour,Quelqu'un aurait-il des exemples sous visual C++ .net utilisant la stack BT de windows XP SP2 ? dont la description se trouve :http://msdn.mic pb avec les fichiers cpp [ par Saros ] Bon là c'est la première fois que ça me le fait.Je bosse sous VC++6.J'ai un projet avec trois fichiers :estack.hetmain.cppRpn_Alg.cppJ'ai déclaré et d "interpreteur"? [ par Blackhorn ] Bonjour, je voudrais en faite sortir des informations d"un fichier, et les "interpr&#233;t&#233;" mais je me demande comment on peut&nbsp; mettre dans erreur de stack overflow à cause de tableaux trop volumineux [ par nicolas_vergnes ] SalutJe fais de la d&#233;composition en ondelettes sur des images 320x320. Je dois donc bosser avec des tab de dim [320][320][5]. En les d&#233;clara


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.