begin process at 2012 02 12 13:07:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications Linux

 > INTERPRETEUR D'UN LANGAGE PROCHE DU RPN

INTERPRETEUR D'UN LANGAGE PROCHE DU RPN


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :4 239 / 119

Auteur : coucou747

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
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

Les Membres Club peuvent 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

 Sources du même auteur

[C ANSI] TAS (PRIORITY QUEUE)
Source avec Zip INTERPRETEUR BRAINFUCK
Source avec Zip Source avec une capture COMMENTAIRES DOXYGEN VERS VISUAL
Source avec Zip FONCTIONS USUELLES (TRIGO) EN METAPROGRAMMATION
Source avec Zip SOLVEUR DE KAKORUS EN C++

 Sources de la même categorie

Source avec une capture COLORIMÈTRE NUMÉRIQUE LINUX par valchek
Source avec Zip TRAITEMENTS D'IMAGES AU FORMAT PGM AVEC LES ALGORITHMES DE C... par lemout
Source avec Zip ALGORITHME ACO INTERFACE GTK par RyBeN
Source avec Zip COMPRESSER SES SAUVEGARDES SMSBACKUPRESTORE (ANDROID) EN C A... par ThalLab
SIMPLE SCANNER DE PORTS par Vb6Malade

 Sources en rapport avec celle ci

Source avec Zip SCANNER LANGAGE par lajouad
Source avec Zip INI PARSER FLEX++ / BISON++ par neria
Source avec Zip PARSEUR GÉNÉRAL par mehdicherti
Source avec Zip INTERPRETEUR BRAINFUCK par coucou747
Source avec une capture STACK WATCHER par lilxam7

Commentaires et avis

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

Commentaire de coucou747 le 29/10/2007 21:41:36 administrateur CS

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

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 ***

Commentaire de coucou747 le 31/10/2007 00:42:13 administrateur CS

c'est corrige (normalement)

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 =)

Commentaire de coucou747 le 31/10/2007 00:59:58 administrateur CS

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

Commentaire de coucou747 le 31/10/2007 01:00:21 administrateur CS

*compl I ment

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales