windows972
Messages postés28Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention12 août 2009
-
12 avril 2008 à 21:00
Aulios
Messages postés24Date d'inscriptionvendredi 11 décembre 2009StatutMembreDernière intervention30 mars 2011
-
5 juin 2010 à 21:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Aulios
Messages postés24Date d'inscriptionvendredi 11 décembre 2009StatutMembreDernière intervention30 mars 2011 5 juin 2010 à 21:12
A et au passage je signale une erreur de syntaxe : tu as mis "<#" remplacé par "<?" c'est quoi ce truc ??? Juste avant tu marques "<#" remplacé par "<?php" il manque aps un truc ?... Si le "?>", corrige ton "<#" remplacé par "<?" en "#>" remplacé par "?>".
Au passage yoman64, j'ai également fais un interpréteur mais en php également mais moi pour couper un mot pris en compte comme de la syntaxe je fais :
<#
//write: 'the script exit and then crashed writing //write : '
#>
(Moi c'est avec ma syntaxe mais je donne une idée pour windows972)
En fait j'utilise le symbol ^ pour couper les mots prient en comtpe comme de la syntaxe :
<#
//write: 'the script ex^it and th^en crashed writing //write : '
#>
Et ensuite je remplace ^ par rien
Donc cela ne me prend pas en compte les mots correspondants à de la syntaxe.
Et pour afficher le ^ je fais un truc du genre &l656656565; (ou un truc du genre ;)
Cordialement Auhlios
Aulios
Messages postés24Date d'inscriptionvendredi 11 décembre 2009StatutMembreDernière intervention30 mars 2011 5 juin 2010 à 20:58
Bizarrement j'ai fait presqu'exactement pareil =D mais à la différence de toi j'utilise les $_GET pour permettre automatiquement à l'utilisateur d'interpréter mon langage du nom AfterPhp.
Cordialement Auhlios
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 14 avril 2008 à 10:16
Franchement énorme !!! @Windows972 tu à inventé un langage qui existe déjà, mais le plus excellent, c'est que le style d'écriture est le même, sans le savoir !!! :p
Renseigne toi chez Wikipedia par exemple pour tout ce qui est compilation et analyse, c'est vrai que ca ne se résume pas à simplement remplacer une structure en une autre :p Sinon on aurait déjà beaucoup de c++ vers html ^^ ;)
windows972
Messages postés28Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention12 août 2009 13 avril 2008 à 20:23
vous avez l'air drolement fort en PHP !!
cs_yoman64
Messages postés592Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 4 décembre 2008 13 avril 2008 à 20:12
coucou747: Prends pas ça aux mots, j'utilise "pub" dans le sens de laisser une url vers un script qui pourrait l'aider...
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 13 avril 2008 à 19:58
hum... j'ai pas d'autres urls, ce que j'ai fait, je l'ai fait en lisant quelques tutos (que j'ai pas sous la main) et en lisant ce que zerocool disait... avant de faire une "simple pub", j'ai donne pas mal d'explications... faut pas prendre ca pour de la pub... et si j'envoyais d'autres liens, je serais incapable d'expliquer comment ils fonctionnent... c'est une illustration pour mon explication, pas une pub...
cs_yoman64
Messages postés592Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 4 décembre 2008 13 avril 2008 à 19:50
@Windows972: tu n'as toujours pas dit quel est l'intérêt de ton code puisqu'il fait juste remplacer des fonctions par d'autre mots clés ?
Je vais répondre à ton MP ici en même temps: Il y a plusieurs façon de faire un remplacement correcte, partant du scannage caractère par caratère en passant par les regex et compagnies, cela dit c'est un peu complexe et puisque je vois pas trop l'utilité de ton code...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 13 avril 2008 à 19:41
Ah ok il a juste eu du bol de tomber sur un truc existant (je me disais aussi : je ne parvenais pas non plus à trouver d'exemple d'implémentation).
windows972
Messages postés28Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention12 août 2009 13 avril 2008 à 18:47
merci bocoup !!!
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 13 avril 2008 à 18:21
ouais, j'avais raison, t'as cree ton langage...
bon, en fait, ce qu'on fait en pratique, quand on veut parser un truc, on a deux "choses" importantes, le lexeur et le parseur.
un lexeur, c'est une sorte d'itterateur qui te sort des Tokens.
le parseur, c'est l'element qui traite tes Tokens pour les mettre dans une Stack, appeller des Reducteurs pour faire d'une Stack, un AST...
ouais, dit comme ca, c'est pas tres sex, alors on va faire un exemple concret...
le lexeur, c'est une sorte de moulinette, ca te prend une chaine de caractere, et ca la decoupe en elements appelles Tokens, ce sont les elements de bases.
pour la chaine : "1 + 3 * 5" le lexeur renvera les tokens : Token(NOMBRE, 1); Token(OPERATOR, '+'); Token(NOMBRE, 3), Token(OPERATOR, '*'), Token(NOMBRE, 5) dans l'ordre.
la Stack, c'est une pile, comme son nom l'indique, on peut empiler ou depiller des elements par le dessus, on doit aussi pouvoir regarder le dessus, et les elements proches du dessus.
Le Parseur appelle les retours du lexeurs, un par un. pour chaque Token :
il l'empile
il appelle les reducteurs tant que les reducteurs peuvent reduire.
Que font les reducteurs ?
Les reducteurs creent d'autres objets, genre des Operation_s. une Operation se fait a partie de TokensNombre -> TokensOperator -> TokenNombre
C'est nettement plus beau.
Cela dit c'est du n'importe quoi ton code, un simple replace ça peut foutre en l'air un code, il faut prendre en compte les quotes, les boucles, etc...
J'explique:
Si j'ai:
<#
//write: 'the script exit and then crashed writing //write : '
#>
Ben ton truc va me sortir :
<?php
echo 'the script } and ){ crashed writing echo'
?>
alors que moi j'veux affiché "the script exit and then crashed writing //write : "
Ça c'est sans parler que c'est pas flexible du tout de la façon que tu le fais, un espace mal placé et ton code ne le remplace pas comme il faut alors que c'est totalement valide...
J'ai déja fait un interpreteur de script il y a longtemps, en vb6 le mien (j'ai même eu un trophé sur vbfrance dans le temps pfff), alors je te le dis un interpreteur c'est bien plus qu'un simple str_replace... lol
Bon afin de pas porter un jugement finale trop négatif je veux savoir:
1. C'est quoi l'interet sachant que ça fait juste remplacer des fonctions en fonctions php et que c'est même pas flexible du tout et que ça prends pas en compte les erreurs ? Pourquoi pas juste écrire en php directement puisque ton script n'apporte pas rien de plus ?
2. Ton code se résume en 3 lignes de php, en sachant cela c'est plus un snippets qu'une source non?...
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 12 avril 2008 à 23:38
j'ai beau chercher, j'arrive pas a trouver de lien vers une implementation correcte ou une description...
je dois dire que presente comme ca, c'est un langage qui peut difficilement attirer...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 avril 2008 à 23:00
Il n'a pas créé Phoenix, ce langage existe. C'est pour ça que je lui ai demandé de mettre des liens en parlant, vu qu'on ne peut pas dire que ce soit un langage très connu...
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 12 avril 2008 à 22:52
ce que tu fais s'approche plus d'une compilation que d'une interpretation.
En effet, tu transforme un code source en un programme...
sauf qu'en fait, ni les interepreteurs, ni les compilateurs ne fonctionnent comme ca... ici, si tu as une erreur de syntaxe, le processus que tu as cree toi fonctionnera tres bien...
tu devrais te renseigner sur les ast, les parseurs et lexeurs. flex, yacc, bizon, etc... ca te serait tres utile.
t'as deux articles dans les deux derniers linux magazines france, qui traitent de ce sujet (mais en ocaml, malheureusement pour toi)
un truc qui m'etonne, pourquoi t'as cree ce type de langage ?
windows972
Messages postés28Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention12 août 2009 12 avril 2008 à 21:29
a ok j'ai compris c'est plus la peine ^^
windows972
Messages postés28Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention12 août 2009 12 avril 2008 à 21:24
merci pour l'info je rectifie tout mais je suis obligé de transformé mes instruction en code php donc pk tu dit "tu remplace une dizaine d'instruction basique par leurs iquivalence php"
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 avril 2008 à 21:20
Je te l'ai dit : str_replace() prend des tableaux en paramètres.
windows972
Messages postés28Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention12 août 2009 12 avril 2008 à 21:18
je ne vois pas comment faire otrement "tu remplace une dizaine d'instruction basique par leurs iquivalence php"
windows972
Messages postés28Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention12 août 2009 12 avril 2008 à 21:17
je vais l'ameliore avec sa propre bibliotheque de fonction
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 avril 2008 à 21:15
Et bien tâche, la prochaîne fois, de poster un code complet. Ou en tous cas, un minimum complet, parce que là...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 avril 2008 à 21:14
Sans compter que ton moteur peut se résumer en 1 ligne de code, tu montres dont le mauvais exemple. str_replace() prend des tableaux en paramètres. Tu fais 10 fois trop d'appels à cette fonction.
windows972
Messages postés28Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention12 août 2009 12 avril 2008 à 21:14
je sais mais je vais l'optimiser,ne t'iquiete pas !!!^^
je vais faire ma propre librairie de fonction,etc..ma propre gestion des erreurs
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 avril 2008 à 21:12
Hello,
2 remarques :
- tu devrais donner des liens pour ce langage : la référence, la doc, l'explication de ce que c'est etc.
- ton code n'a pas franchement d'intérêt en l'état. Tu ne fais que remplacer une dizaine d'instructions basiques par leur équivalent en php. J'ai vu des interpréteurs brainfuck plus évolués que le tien. Désolé d'être aussi dur mais là, je ne vois pas l'intérêt de ton code.
windows972
Messages postés28Date d'inscriptiondimanche 17 juin 2007StatutMembreDernière intervention12 août 2009 12 avril 2008 à 21:00
5 juin 2010 à 21:12
Au passage yoman64, j'ai également fais un interpréteur mais en php également mais moi pour couper un mot pris en compte comme de la syntaxe je fais :
<#
//write: 'the script exit and then crashed writing //write : '
#>
(Moi c'est avec ma syntaxe mais je donne une idée pour windows972)
En fait j'utilise le symbol ^ pour couper les mots prient en comtpe comme de la syntaxe :
<#
//write: 'the script ex^it and th^en crashed writing //write : '
#>
Et ensuite je remplace ^ par rien
Donc cela ne me prend pas en compte les mots correspondants à de la syntaxe.
Et pour afficher le ^ je fais un truc du genre &l656656565; (ou un truc du genre ;)
Cordialement Auhlios
5 juin 2010 à 20:58
Cordialement Auhlios
PS: Site de mon langage : http://www.afterphp.totalh.com/
14 avril 2008 à 10:16
Renseigne toi chez Wikipedia par exemple pour tout ce qui est compilation et analyse, c'est vrai que ca ne se résume pas à simplement remplacer une structure en une autre :p Sinon on aurait déjà beaucoup de c++ vers html ^^ ;)
13 avril 2008 à 20:23
13 avril 2008 à 20:12
13 avril 2008 à 19:58
13 avril 2008 à 19:50
Voila ma source: http://www.vbfrance.com/codes/ALEX-SCRIPT-INTERPRETEUR-COMMANDE-VERSION_6957.aspx
@Windows972: tu n'as toujours pas dit quel est l'intérêt de ton code puisqu'il fait juste remplacer des fonctions par d'autre mots clés ?
Je vais répondre à ton MP ici en même temps: Il y a plusieurs façon de faire un remplacement correcte, partant du scannage caractère par caratère en passant par les regex et compagnies, cela dit c'est un peu complexe et puisque je vois pas trop l'utilité de ton code...
13 avril 2008 à 19:41
13 avril 2008 à 18:47
13 avril 2008 à 18:21
bon, en fait, ce qu'on fait en pratique, quand on veut parser un truc, on a deux "choses" importantes, le lexeur et le parseur.
un lexeur, c'est une sorte d'itterateur qui te sort des Tokens.
le parseur, c'est l'element qui traite tes Tokens pour les mettre dans une Stack, appeller des Reducteurs pour faire d'une Stack, un AST...
ouais, dit comme ca, c'est pas tres sex, alors on va faire un exemple concret...
le lexeur, c'est une sorte de moulinette, ca te prend une chaine de caractere, et ca la decoupe en elements appelles Tokens, ce sont les elements de bases.
pour la chaine : "1 + 3 * 5" le lexeur renvera les tokens : Token(NOMBRE, 1); Token(OPERATOR, '+'); Token(NOMBRE, 3), Token(OPERATOR, '*'), Token(NOMBRE, 5) dans l'ordre.
la Stack, c'est une pile, comme son nom l'indique, on peut empiler ou depiller des elements par le dessus, on doit aussi pouvoir regarder le dessus, et les elements proches du dessus.
Le Parseur appelle les retours du lexeurs, un par un. pour chaque Token :
il l'empile
il appelle les reducteurs tant que les reducteurs peuvent reduire.
Que font les reducteurs ?
Les reducteurs creent d'autres objets, genre des Operation_s. une Operation se fait a partie de TokensNombre -> TokensOperator -> TokenNombre
OUI c'est complique, mais ca marche comme ca...
j'ai fait quelques exemples ici :
http://www.cppfrance.com/codes/INTERPRETEUR-LANGAGE-PROCHE-RPN_44529.aspx
le lexer
http://files.codes-sources.com/fichier.aspx?id=44529&f=interpretor%2ffiles.c
le parseur
http://files.codes-sources.com/fichier.aspx?id=44529&f=interpretor%2fmain.c
et celui la en php :
http://www.phpcs.com/codes/PILE-PARSEUR-LEXER-TOKENS_44089.aspx
En C, c'est chiant a coder, et c'est VRAIMENT pas un langage adapte pour ca... en php, c'est trop lent.
13 avril 2008 à 18:06
help
13 avril 2008 à 18:04
je ne savait meme pas sa !!^^
j'ai juste donné ce nom comme sa !!
13 avril 2008 à 03:40
Moi après quelques recherches j'ai trouvé ça http://en.wikipedia.org/wiki/Phoenix_Object_Basic
Ce que malalam essait de te dire, et que tu semble pas saisir (ou t'as juste pas mis à jour le code) c'est de transformer ça:
# $file = str_replace ('<#', '<?php' , $file);
# $file = str_replace ('<#', '<?' , $file);
#
# $file = str_replace ('//write : ', 'echo' , $file);
# $file = str_replace ('//variable.', '$' , $file);
#
# $file = str_replace ('//if :', 'if (' , $file);
# $file = str_replace ('//elseif :', 'elseif (' , $file);
# $file = str_replace ('//else :', 'else {' , $file);
# $file = str_replace ('then', '){' , $file);
# $file = str_replace ('endif', '}' , $file);
#
#
# $file = str_replace ('//while :', 'while (' , $file);
# $file = str_replace ('/:', ') {' , $file);
# $file = str_replace ('exit', '}' , $file);
en
$find = array('<#','<#','//write : ','//variable.','//if :', '//elseif :','//else :', 'then','endif','//while :','/:', 'exit')
$replace = array('<?php' ,'echo' ,'$' ,'if (' , 'elseif (' ,'else {' , '){' ,'}' , 'while (' ,') {' ,'}')
$file = str_replace ($find,$replace, $file);
C'est nettement plus beau.
Cela dit c'est du n'importe quoi ton code, un simple replace ça peut foutre en l'air un code, il faut prendre en compte les quotes, les boucles, etc...
J'explique:
Si j'ai:
<#
//write: 'the script exit and then crashed writing //write : '
#>
Ben ton truc va me sortir :
<?php
echo 'the script } and ){ crashed writing echo'
?>
alors que moi j'veux affiché "the script exit and then crashed writing //write : "
Ça c'est sans parler que c'est pas flexible du tout de la façon que tu le fais, un espace mal placé et ton code ne le remplace pas comme il faut alors que c'est totalement valide...
J'ai déja fait un interpreteur de script il y a longtemps, en vb6 le mien (j'ai même eu un trophé sur vbfrance dans le temps pfff), alors je te le dis un interpreteur c'est bien plus qu'un simple str_replace... lol
Bon afin de pas porter un jugement finale trop négatif je veux savoir:
1. C'est quoi l'interet sachant que ça fait juste remplacer des fonctions en fonctions php et que c'est même pas flexible du tout et que ça prends pas en compte les erreurs ? Pourquoi pas juste écrire en php directement puisque ton script n'apporte pas rien de plus ?
2. Ton code se résume en 3 lignes de php, en sachant cela c'est plus un snippets qu'une source non?...
12 avril 2008 à 23:38
je dois dire que presente comme ca, c'est un langage qui peut difficilement attirer...
12 avril 2008 à 23:00
12 avril 2008 à 22:52
En effet, tu transforme un code source en un programme...
sauf qu'en fait, ni les interepreteurs, ni les compilateurs ne fonctionnent comme ca... ici, si tu as une erreur de syntaxe, le processus que tu as cree toi fonctionnera tres bien...
tu devrais te renseigner sur les ast, les parseurs et lexeurs. flex, yacc, bizon, etc... ca te serait tres utile.
t'as deux articles dans les deux derniers linux magazines france, qui traitent de ce sujet (mais en ocaml, malheureusement pour toi)
un truc qui m'etonne, pourquoi t'as cree ce type de langage ?
12 avril 2008 à 21:29
12 avril 2008 à 21:24
12 avril 2008 à 21:20
12 avril 2008 à 21:18
12 avril 2008 à 21:17
12 avril 2008 à 21:15
12 avril 2008 à 21:14
12 avril 2008 à 21:14
je vais faire ma propre librairie de fonction,etc..ma propre gestion des erreurs
12 avril 2008 à 21:12
2 remarques :
- tu devrais donner des liens pour ce langage : la référence, la doc, l'explication de ce que c'est etc.
- ton code n'a pas franchement d'intérêt en l'état. Tu ne fais que remplacer une dizaine d'instructions basiques par leur équivalent en php. J'ai vu des interpréteurs brainfuck plus évolués que le tien. Désolé d'être aussi dur mais là, je ne vois pas l'intérêt de ton code.
12 avril 2008 à 21:00