IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

parser du javascript - ANTLR


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 42
    Points
    42
    Par défaut parser du javascript - ANTLR
    Bonjour,

    Je dois parser du javascript en php.
    Mon objectif est d'utiliser le php un peu comme un "compilateur" javascript:
    a. se servir du php comme on utilise les directives de compilation en C par exemple.
    b. interpreter le javascript généré pour y apporter certaines modifications (de l'obfuscation par exemple).

    Le code php ne sera pas mis en ligne, les temps de calculs peuvent être longs et gourmands, ce n'est pas un problème. Je veux m'en servir pour générer des fichiers javascript, un peu comme l'on crée des librairies C (.dll, .o). Ce sont ces librairies qui seront ensuite exploitées par les développeurs web.

    Le processus de création de ces librairies est le suivant:
    1) rédaction du code javascript, ce dernier peut contenir du code php grâce à <?php ... ?> qui peut alors être assimilé aux directives de compilation.
    2) lancer une première pass de php sur ce code: cela rempli le buffer de sortie du serveur php local.
    3) parser le buffer de sortie et interpréter son contenu javascript pour y apporter les modifications voulues

    Les deux premières étapes ne sont pas un problème, c'est l'essence même du php. La principale difficulté dans ce projet est le point 3: l’interprétation en php du code javascript.

    Via ce post, je recherche des conseils pour compléter ma recherche personnelle. J'ai retenu 2 liens intéressants:
    - http://timwhitlock.info/blog/2008/05...arser-for-php/
    - ANTLR, un ensemble d'outils pour l'interpretation de langages. J'ai également trouvé le lien suivant : un portage de ANTLR pour php. Malheureusement la documentation est très faible.

    Si vous avez travaillé avec ces outils, ou connaissez quelque chose d'équivalent, je suis tout ouïe !
    Je suis également ouvert pour échanger autour d'autres techniques me permettant un résultat similaire.

    Merci pour votre attention et à très bientôt.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 42
    Points
    42
    Par défaut
    Merci bien !

    Après un rapide premier coup d'oeil, il semble que ce soit tout à fait ce que je cherche ! Et bien plus approprié qu'un portage de ANTLR (qui reste un excellent outil mais pas vraiment adapté au PHP...). En outre, étant issu de la fondation Mozilla, je suis à peu près certains de sa pérennité et presque autant de sa conformité au standard. En outre, ses 3 licences apportent une certaine souplesse... 'fin bref, je vais commencer par la c'est certain !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 42
    Points
    42
    Par défaut
    Je suis donc parti sur spidermonkey et j'ai encore quelques petits soucis:
    1) peu de doc
    2) je m'inspire donc de la version C de l’interpréteur javascript qui possède une doc sur le site de mozilla. J'imagine que l'on retrouve les mêmes fonctions dans la version php.
    Je la parcours depuis un petit moment maintenant et je ne vois pas comment récupérer l'arbre correspondant à la structure grammaticale du code javascript interprété. En d'autres termes, je ne vois pas comment récupérer le résultat du parsing: variables, fonctions et objets créés, leur prototype, etc.
    Seulement ensuite, je pourrais réaliser les changements désirés: parcourir chaque noeud de l'arbre, et en fonction de son type et de sa valeur, procéder à quelques modifications... Pour finalement généré le script final à partir de cet arbre.

    Encore un petit coup de pouce s'il vous plait... Merci d'avance.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    spidermonkey pour PHP exécute uniquement du code javascript, si tu veux parser du javascript tu peux t'inspirer de Jison

Discussions similaires

  1. [Débutant] Parser du javascript
    Par cha23 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/01/2014, 16h31
  2. Parser du javascript
    Par claire34 dans le forum Langage
    Réponses: 0
    Dernier message: 10/01/2013, 15h28
  3. Servlet générant xml à parser en javascript
    Par KRis dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/06/2011, 21h31
  4. parser javascript
    Par mrtatou dans le forum Web
    Réponses: 7
    Dernier message: 21/03/2006, 12h42
  5. Parser du XML en javascript
    Par sylsau dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/01/2006, 02h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo