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

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 22 mars 2005 à 11:44
Heero Yui Messages postés 3 Date d'inscription jeudi 4 janvier 2007 Statut Membre Dernière intervention 9 janvier 2008 - 9 janv. 2008 à 14:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30252-hellparser-projet-de-creation-d-interpreteurs-rapport

Heero Yui Messages postés 3 Date d'inscription jeudi 4 janvier 2007 Statut Membre Dernière intervention 9 janvier 2008
9 janv. 2008 à 14:40
Merci pour la réponse

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

merci
Hellaynnea Messages postés 57 Date d'inscription samedi 14 décembre 2002 Statut Membre Dernière intervention 2 mai 2005
9 janv. 2008 à 14:25
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".
Heero Yui Messages postés 3 Date d'inscription jeudi 4 janvier 2007 Statut Membre Dernière intervention 9 janvier 2008
9 janv. 2008 à 14:09
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
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
23 mars 2005 à 19:48
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...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
23 mars 2005 à 14:22
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.
cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008
23 mars 2005 à 12:42
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
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
23 mars 2005 à 08:32
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....


+++
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
22 mars 2005 à 21:59
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.
Hellaynnea Messages postés 57 Date d'inscription samedi 14 décembre 2002 Statut Membre Dernière intervention 2 mai 2005
22 mars 2005 à 20:22
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.
++
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
22 mars 2005 à 20:12
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...
Hellaynnea Messages postés 57 Date d'inscription samedi 14 décembre 2002 Statut Membre Dernière intervention 2 mai 2005
22 mars 2005 à 19:57
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
cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008
22 mars 2005 à 17:49
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
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
22 mars 2005 à 11:52
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.
Rejoignez-nous