HELLPARSER - PROJET DE CRÉATION D'INTERPRÊTEURS + RAPPORT
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011
-
22 mars 2005 à 11:44
Heero Yui
Messages postés3Date d'inscriptionjeudi 4 janvier 2007StatutMembreDerniè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.
Heero Yui
Messages postés3Date d'inscriptionjeudi 4 janvier 2007StatutMembreDerniè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és57Date d'inscriptionsamedi 14 décembre 2002StatutMembreDerniè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és3Date d'inscriptionjeudi 4 janvier 2007StatutMembreDerniè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és1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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és368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDerniè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és1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 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és1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 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és57Date d'inscriptionsamedi 14 décembre 2002StatutMembreDerniè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és1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 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és57Date d'inscriptionsamedi 14 décembre 2002StatutMembreDerniè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és368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDerniè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 :
9 janv. 2008 à 14:40
il ne me reste donc plus qu'a choisir la forme de mon language
merci
9 janv. 2008 à 14:25
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".
9 janv. 2008 à 14:09
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
23 mars 2005 à 19:48
Peut-être qu'avec VC++7 ou 8 ça passera...
23 mars 2005 à 14:22
23 mars 2005 à 12:42
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
23 mars 2005 à 08:32
/, \ 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....
+++
22 mars 2005 à 21:59
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.
22 mars 2005 à 20:22
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.
++
22 mars 2005 à 20:12
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...
22 mars 2005 à 19:57
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
22 mars 2005 à 17:49
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
22 mars 2005 à 11:52
(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.