PHPCODE INDENTER

cs_Mizuka Messages postés 66 Date d'inscription jeudi 4 août 2005 Statut Membre Dernière intervention 16 décembre 2009 - 4 mars 2008 à 15:53
BaFM Messages postés 64 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 26 novembre 2009 - 10 mars 2008 à 20:04
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/45940-phpcode-indenter

BaFM Messages postés 64 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 26 novembre 2009
10 mars 2008 à 20:04
Le Lexer (analyseur lexical) il ne produit pas de code, il produit un flux de jetons qui sont utilisés par un Parser (analyseur syntaxique) qui produit un arbre AST. C'est cet arbre que tu retransformera en chaîne pour le formatage.
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
10 mars 2008 à 19:05
salut, et merci =),
en fait j'avais pas fais attention au cas de heredoc..donc merci pour la remarque,(bug fix dans la prochaine maj :D)

@BaFm, si tu connais un lexer qui produit du code pour php je serais pronneur...(car je connais que ceux qui produisent du code pour C, C++, C#, java),

merci :)
Eregon Messages postés 17 Date d'inscription lundi 3 septembre 2007 Statut Membre Dernière intervention 26 octobre 2009
10 mars 2008 à 18:13
Moi je dit vive l'indent personnel^^
Car il y a toujours des exceptions, genre des conditions qu'on veux à peine mentionner et qu'on met sur une ligne, un texte que l'on met directement contre le bord(toujours le cas en heredoc), un saut à la ligne pour repérer des CR ou LF, une arborescence où l'on veut l'élément racine contre la marge, ...

Mais sinon ça doit surement être un bon exercice de parsing :p
Bon codage
P.S.:'deux paramètres la directoire et le nom du fichier' -> '2 paramètres : le dossier et le fichier' ;) (pourquoi séparer ces paramètres?)
BaFM Messages postés 64 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 26 novembre 2009
10 mars 2008 à 10:35
Bonjour,

Votre code ne gère pas la syntaxe HereDoc supportée par php.

Une méthode plus propre est d'utiliser lexer et parser pour régénérer le code indenté en gérant complètement la grammaire du langage, ce qui évite de tomber dans des cas limites.
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
5 mars 2008 à 15:35
salut et merci
@Mizuka:
le fonctionnement est très simple, une boucle sur tous les char du script puis un switch suivant les cas, par exemple si c'est un '{' ça nécessite un retour a la ligne puis une tabulation pour ce qui suis ';' retour à la ligne....ainsi de suite
je crois que mes var sont explicites! sinon
$is_string1; pas une chaine du type "string"
$is_string2: pas une chaine du type 'string'
deux type de commentaire //comment et /*comment */
voilà :)

@jlf5808
relis la description j'ai expliqué comment faire :)
Afficher les 7 commentaires