begin process at 2012 05 27 19:54:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > HELLPARSER - PROJET DE CRÉATION D'INTERPRÊTEURS + RAPPORT

HELLPARSER - PROJET DE CRÉATION D'INTERPRÊTEURS + RAPPORT


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Initié Date de création :22/03/2005 Date de mise à jour :22/03/2005 10:19:17 Vu / téléchargé :3 470 / 278

Auteur : Hellaynnea

Ecrire un message privé
Site perso
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Il s'agit d'un interprêteur que j'ai fait pour un projet. Il n'y a ici que la partie blocs d'instruction, construction dynamique de fonctions, de boucles, etc...

L'interpréteur :  
J'ai imaginé un interpréteur sous forme de jeu Légo. On dispose d'un ensemble de briques qu'il faut juxtaposer pour former progressivement le code à exécuter. Certains blocs sont « intelligents » à savoir qu' ils peuvent s'adapter à l'environnement dans lequel on les place, c'est notamment le cas des blocs CVar qui représentent les modèles de variables. La constitution de tous ces blocs demandèrent une phase d'analyse importante. Malheureusement, cette phase n'empêcha pas d'avoir des surprises. En effet, il me fallut à de nombreuses reprises remanier certains blocs afin que tous coïncident parfaitement. Nous décrirons cela plus en détails plus loin. J'ai par ailleurs agrémenté de schémas les points les plus critiques du programme. Je pense qu'en effet, un schéma clair vaut mieux que quatre pages de discours. J'espère que vous apprécierez la lecture de ce rapport autant que j'ai apprécié réaliser ce petit programme.

Source

  • voir le zip + rapport
voir le zip + rapport

 Conclusion

J'ai mis mon rapport de projet dans le zip plus un makefile pour les linuxiens

 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

22 mars 2005 10:03:52 :
22 mars 2005 10:07:53 :
22 mars 2005 10:19:17 :

 Sources du même auteur

Source avec Zip CLOGFILE - CLASSE DE GESTION DE FICHIER LOG (THREAD SAFE)
Source avec Zip CXMLLINE : LIGNES XML
Source avec Zip CLASS WRAPPER STD::MAP + TEMPLATES
Source avec Zip WIN32 TOOL KIT MFC LIKE + CHANGER LANGUAGE APPLI + PARSERS (...
Source avec Zip PARSEUR XML

 Sources de la même categorie

Source avec Zip KISIEL CD INFO DRIVE par kisiel0147852
Source avec une capture SUPPRESSION DES REDONDANCES DE FICHIERS par cyberntique
Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro

Commentaires et avis

Commentaire de magic_Nono le 22/03/2005 11:52:54

Très bon projet
(je n'ai pas regardé le srce, uniquement le rapport)
y a moyen de l'améliorer, évidemment

mais, c'est déjà très simpa et on sent une bonne étude derriere...

A

++
Nono.

Commentaire de Xs le 22/03/2005 17:49:33

Ton projet à l'air d'être vraiment très bien...
Mais pour en être sûr il faudrait que je puisse le compiler.

Aprés avoir corrigé les erreurs de "std::ostream& operator <<..." (déclaration des itérateurs et redéfinition de la variable "e" (j'ai toujours pas compris où est ce qu'on la déclarait celle là)), j'obtiens des erreusr linker :

Function.obj : error LNK2001: unresolved external symbol "public: __thiscall CIfInstruction::CIfInstruction(struct if_t const &,struct if_t const &)" (??0CIfInstruction@@QAE@ABUif_t@@0@Z)
Function.obj : error LNK2001: unresolved external symbol "public: void __thiscall CIfInstruction::pushInstruction(struct if_t const &)" (?pushInstruction@CIfInstruction@@QAEXABUif_t@@@Z)
Function.obj : error LNK2001: unresolved external symbol "public: __thiscall CIfInstruction::CIfInstruction(class CIfInstruction const &)" (??0CIfInstruction@@QAE@ABV0@@Z)
Function.obj : error LNK2001: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class CIfInstruction const &)" (??6@YAAAV?$b
asic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVCIfInstruction@@@Z)

J'aimerai tes lumières.

ps : je suis sous VC6

Commentaire de Hellaynnea le 22/03/2005 19:57:10

Salut, pour la compilation c'est curieux je n'ai aucun pb sous vc6 (codé pour ca originalement) et vc7 (que je viens de tester). Pour la déclaration des variables e, elle sont déclarées dans l'instruction for et ne devraient être existantes (aux yeux du compilo) que dans cette même instruction le fait de faire :
for( int i = 0; i < 10; ++i ) { ...}
for( int i = 10; i <  100; ++i) {...}
ne devrait pas poser de pb à tout compilo qui se respecte.
Pour les unresolved external, tu n'aurais pas supprimé un fichier par hasard ? (genre le IfInstruction.cpp)
++yohan

Commentaire de Funto66 le 22/03/2005 20:12:38

Ton Makefile sous Linux n'est pas parfait, faut virer les extensions .exe et mettre des #include "Header.h" au lieu de #include ".\Header.h" dans les fichiers .cpp, mais une fois qu'on a fait ça on arrive à compiler sous Linux :)

A part ça j'aime aussi bcp ton projet :) Ca me fait penser à quand j'écrivais mon compilo y'a longtemps maintenant :)

En fait l'avantage c'est que ça pourrait servir ensuite à créer plusieurs langages avec des syntaxes différentes, mais qui dans le fond seraient les mêmes...j'aime bien ce concept :)

PS : J'ai lu un peu le début du pdf aussi...

Commentaire de Hellaynnea le 22/03/2005 20:22:38

Salut,
désolé pour le makefile, j'avais pas de linux sous la main j'ai compilé sous cygwin. Mais je vois pas pourquoi il n'aime pas le #include ".\Header.h" étant donné qu'on peut spécifier tout un chemin dans le include : "#include "../../dev/Header.h" par exemple ?

Sinon merci à tous pour bonnes remarques.
++

Commentaire de Funto66 le 22/03/2005 21:59:55

Ben non, parce que, bien que Windows supporte très bien les mélanges entre / et \ pour les chemins de fichiers (avec une préférence pr le \ qd même), sous Linux l'équivalent serait ./ et non .\ ^^
Faut aussi faire gaffe à la casse (dans ton cas y'a pas eu de pb) : pr Linux, un fichier du nom de MonFichier et un autre du nom de monfichier sont 2 fichiers différents, pas pr Windows.

Commentaire de magic_Nono le 23/03/2005 08:32:27

pr les chemins, VC a l'air d'accepter

/, \ et \\


perso, j'utilise préférentiellement /, mais Visual a tendence à s'emméler pour les recherches...
et quand le \ est seul aussi (il lui arrive d'échapper le car suivant car c'est svt ds une chaine [introduit par les guillements...])

ceci dit, c'est plutot lourd d'utiliser le doublement à chaque fois....


+++

Commentaire de Xs le 23/03/2005 12:42:24

Hellaynnea >
Je n'ai rien supprimé du projet... mais IfInstruction.cpp & h n'étaient pas présent dans le dsw. Le problème linker semble résolu... au profit d'une autre erreur :
c:\documents and settings\administrateur\bureau\hellparser\ifinstruction.cpp(199) : error C2039: 'clear' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
c:\documents and settings\administrateur\bureau\hellparser\ifinstruction.cpp(208) : error C2039: 'clear' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'

Pour ce qui est de la syntaxe :
for(int i...) {...)
for(int i...) {...}

VC6 ne tolère pas cette syntaxe à ma connaissance (il me l'a toujour refusée). Il me dit que il y a une redéfinition d'une variable, etc...

cordialement

Commentaire de Kirua le 23/03/2005 14:22:40

Ton rapport est bien fichu, j'ai quasiment tout lu. J'aime bien la façon dont tu gères le "voyage" des variables pour les retours de fonction, c'est pas tout simple. Ça me donne envie de m'y remettre tiens ^^ mci pour ce code.

Commentaire de Funto66 le 23/03/2005 19:48:24

Xs, tous ces pb sont apparemment dûs aux pb de la compatibilité ANSI/ISO de VC++6...
Peut-être qu'avec VC++7 ou 8 ça passera...

Commentaire de Heero Yui le 09/01/2008 14:09:31

Bonjour,

Ton code est très intéressant et peut s'avérer utile, mais je ne comprend pas très bien commet on l'utilise...

j'ai vus qu'il créé des fonction dans le main, mais je n'ai pas vue de fichier de script, ce qui aurait dut ètre selon moi la position du code à interpréter...

fichier.xxx => interpréteur qui exécute les instructions du fichier.xxx

a+
E

Commentaire de Hellaynnea le 09/01/2008 14:25:47

Salut Heero,

En fait il s'agit d'un ensemble de fonctions que tu peux utiliser dans un script que tu parses avec lex/yacc par exemple. Une fois que tu connais le nom de tes variables, leurs valeurs, les noms des fonctions etc... tu peux utiliser mes fonctions pour reconstituer un "executable".

Commentaire de Heero Yui le 09/01/2008 14:40:04

Merci pour la réponse

il ne me reste donc plus qu'a choisir la forme de mon language

merci

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,686 sec (4)

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