Discussion:
Est il possible d'etendre la syntaxe de PHP
(trop ancien pour répondre)
BertrandB
2008-03-23 21:08:06 UTC
Permalink
EN fait je cherche à savoir s'il est possible en php d'étendre la
syntaxe de celui-ci en rajoutant des tokens (éléments lexicaux)
supplémentaires.

Pour l'instant je ne crois pas mais parfois cantonade est de bon conseil.
Olivier Miakinen
2008-03-23 23:14:39 UTC
Permalink
Post by BertrandB
EN fait je cherche à savoir s'il est possible en php d'étendre la
syntaxe de celui-ci en rajoutant des tokens (éléments lexicaux)
supplémentaires.
À moins d'aller modifier et recompiler le code source, je ne vois pas
bien comment ce serait possible.
Post by BertrandB
Pour l'instant je ne crois pas mais parfois cantonade est de bon conseil.
Alors justement, en voici un (de conseil) : si ton adresse est invalide,
elle doit être syntaxiquement correcte et terminée par le TLD .invalid
(quelle que soit la casse).

Par exemple :
***@I.N.V.A.L.I.D.E.spamgourmet.com.INVALID

Ou bien :
***@I.N.V.A.L.I.D.E.spamgourmet.INVALID

Merci !
BertrandB
2008-03-24 15:18:40 UTC
Permalink
Post by Olivier Miakinen
Post by BertrandB
EN fait je cherche à savoir s'il est possible en php d'étendre la
syntaxe de celui-ci en rajoutant des tokens (éléments lexicaux)
supplémentaires.
À moins d'aller modifier et recompiler le code source, je ne vois pas
bien comment ce serait possible.
Post by BertrandB
Pour l'instant je ne crois pas mais parfois cantonade est de bon conseil.
Alors justement, en voici un (de conseil) : si ton adresse est invalide,
elle doit être syntaxiquement correcte et terminée par le TLD .invalid
(quelle que soit la casse).
Merci !
ça va maintenant ?
Denis Beauregard
2008-03-24 08:50:04 UTC
Permalink
Le 23 Mar 2008 21:08:06 GMT, BertrandB
Post by BertrandB
EN fait je cherche à savoir s'il est possible en php d'étendre la
syntaxe de celui-ci en rajoutant des tokens (éléments lexicaux)
supplémentaires.
Pour l'instant je ne crois pas mais parfois cantonade est de bon conseil.
PHP est un langage interprété. Je pense que les langages où on peut
redéfinir les opérateurs comme le C++ sont toujours compilés.


Denis
Olivier Miakinen
2008-03-24 09:35:40 UTC
Permalink
Post by BertrandB
EN fait je cherche à savoir s'il est possible en php d'étendre la
syntaxe de celui-ci en rajoutant des tokens (éléments lexicaux)
supplémentaires.
[...] les langages où on peut
redéfinir les opérateurs comme le C++ [...]
Je n'ai pas compris la question comme ça. En C++ on peut redéfinir ce
que font certains opérateurs (sans changer toutefois leur nombre de
paramètres), alors que BertrandB semble vouloir rajouter une structure
du langage, par exemple un truc du genre « do <instr> until <test> ».
Denis Beauregard
2008-03-24 13:52:15 UTC
Permalink
Post by Olivier Miakinen
Post by BertrandB
EN fait je cherche à savoir s'il est possible en php d'étendre la
syntaxe de celui-ci en rajoutant des tokens (éléments lexicaux)
supplémentaires.
[...] les langages où on peut
redéfinir les opérateurs comme le C++ [...]
Je n'ai pas compris la question comme ça. En C++ on peut redéfinir ce
que font certains opérateurs (sans changer toutefois leur nombre de
paramètres), alors que BertrandB semble vouloir rajouter une structure
du langage, par exemple un truc du genre « do <instr> until <test> ».
Tu en connais des langages que l'on peut modifier sans recompiler ?
À part faire des sous-programmes ou routines, ce qui est très répandu,
il reste la redéfinition des éléments du langage. Ajouter des
structures me semble trop demander si on ne veut pas ré-écrire le
compilateur. De toutes façons, le PHP tournant sous Linux, le source
est disponible, donc le langage peut être recompilé de façon
différente. Mais il me semble que l'on chercherait d'abord à
redéfinir les opérateurs avant d'en ajouter.


Denis
Olivier Miakinen
2008-03-24 13:57:55 UTC
Permalink
Post by Denis Beauregard
Tu en connais des langages que l'on peut modifier sans recompiler ?
Non, sauf peut-être lisp mais c'est un cas assez particulier. D'ailleurs
je n'ai pas dit autre chose.
Post by Denis Beauregard
[...] il me semble que l'on chercherait d'abord à
redéfinir les opérateurs avant d'en ajouter.
J'ai répondu à ce que j'ai compris de la question de BertrandB. Je
suppose qu'il reviendra préciser ce qu'il avait en tête.
BertrandB
2008-03-24 16:23:10 UTC
Permalink
Post by Olivier Miakinen
Post by Denis Beauregard
Tu en connais des langages que l'on peut modifier sans recompiler ?
Non, sauf peut-être lisp mais c'est un cas assez particulier. D'ailleurs
je n'ai pas dit autre chose.
Post by Denis Beauregard
[...] il me semble que l'on chercherait d'abord à
redéfinir les opérateurs avant d'en ajouter.
J'ai répondu à ce que j'ai compris de la question de BertrandB. Je
suppose qu'il reviendra préciser ce qu'il avait en tête.
Me revoilà ... et j'ai essayé de trouver de la doc sur zend et je n'ai
pas trouvé

en fait pour le fun et la beauté j'aurais voulu définir un équivalent à
echo heredoc à la mode de python.
J'aurais voulu faire interpréter """ {$fun($truc)} """ comme
echo <<< EOT
{$fun($truc)}
EOT;
Olivier Miakinen
2008-03-24 21:10:26 UTC
Permalink
Post by BertrandB
Post by Olivier Miakinen
J'ai répondu à ce que j'ai compris de la question de BertrandB. Je
suppose qu'il reviendra préciser ce qu'il avait en tête.
Me revoilà ... et j'ai essayé de trouver de la doc sur zend et je n'ai
pas trouvé
en fait pour le fun et la beauté j'aurais voulu définir un équivalent à
echo heredoc à la mode de python.
J'aurais voulu faire interpréter """ {$fun($truc)} """ comme
echo <<< EOT
{$fun($truc)}
EOT;
C'est donc bien ce que j'avais compris il me semble. Il doit être
possible de modifier le code source de PHP (en C) pour faire ce que
tu souhaites, mais bien sûr ce ne sera plus du PHP. Sinon, tu peux
aussi développer un moteur de templates au dessus de PHP (donc en PHP)
mais bien sûr ce ne sera plus du PHP non plus.

Par ailleurs, merci pour ton adresse invalide, comme ça c'est parfait.
BertrandB
2008-03-25 09:13:56 UTC
Permalink
Post by Olivier Miakinen
Post by BertrandB
Post by Olivier Miakinen
J'ai répondu à ce que j'ai compris de la question de BertrandB. Je
suppose qu'il reviendra préciser ce qu'il avait en tête.
Me revoilà ... et j'ai essayé de trouver de la doc sur zend et je n'ai
pas trouvé
en fait pour le fun et la beauté j'aurais voulu définir un équivalent à
echo heredoc à la mode de python.
J'aurais voulu faire interpréter """ {$fun($truc)} """ comme
echo <<< EOT
{$fun($truc)}
EOT;
C'est donc bien ce que j'avais compris il me semble. Il doit être
possible de modifier le code source de PHP (en C) pour faire ce que
tu souhaites, mais bien sûr ce ne sera plus du PHP. Sinon, tu peux
aussi développer un moteur de templates au dessus de PHP (donc en PHP)
mais bien sûr ce ne sera plus du PHP non plus.
J'en arrive à la même conclusion suite aux ponts suivant :
- depuis php4 l'analyse lexicale est une tâche séparée
- certaines erreurs ne sont pas récupérables dont E_PARSE

Pour ce qui est des moteur de template : PHP en est déjà tellement prêt
que je trouve que cela fait pansement sur une jambe en bois.

Par contre où est donc cette foutu doc sur zend api ?
Mickael Wolff
2008-03-25 20:30:18 UTC
Permalink
Post by BertrandB
Par contre où est donc cette foutu doc sur zend api ?
<http://fr.php.net/manual/fr/internals2.php>
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
BertrandB
2008-03-26 16:27:22 UTC
Permalink
Post by Mickael Wolff
Post by BertrandB
Par contre où est donc cette foutu doc sur zend api ?
<http://fr.php.net/manual/fr/internals2.php>
Vide pour zend2 ...
Mickael Wolff
2008-03-26 19:12:51 UTC
Permalink
Post by BertrandB
Vide pour zend2 ...
J'avoue que je n'utilises pas la doc en ligne lorsque j'ai une
interrogation à ce niveau. Je préfères aller voir directement le source
qui est bien documenté, et très clair.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
BertrandB
2008-03-24 15:18:40 UTC
Permalink
Post by Denis Beauregard
Post by Olivier Miakinen
Post by BertrandB
EN fait je cherche à savoir s'il est possible en php d'étendre la
syntaxe de celui-ci en rajoutant des tokens (éléments lexicaux)
supplémentaires.
[...] les langages où on peut
redéfinir les opérateurs comme le C++ [...]
Je n'ai pas compris la question comme ça. En C++ on peut redéfinir ce
que font certains opérateurs (sans changer toutefois leur nombre de
paramètres), alors que BertrandB semble vouloir rajouter une structure
du langage, par exemple un truc du genre « do <instr> until <test> ».
Tu en connais des langages que l'on peut modifier sans recompiler ?
Oui SCHEME entre autre (smalltalk aussi)
Bruno Desthuilliers
2008-03-25 14:35:16 UTC
Permalink
Post by Denis Beauregard
Post by Olivier Miakinen
Post by BertrandB
EN fait je cherche à savoir s'il est possible en php d'étendre la
syntaxe de celui-ci en rajoutant des tokens (éléments lexicaux)
supplémentaires.
[...] les langages où on peut
redéfinir les opérateurs comme le C++ [...]
Je n'ai pas compris la question comme ça. En C++ on peut redéfinir ce
que font certains opérateurs (sans changer toutefois leur nombre de
paramètres), alors que BertrandB semble vouloir rajouter une structure
du langage, par exemple un truc du genre « do <instr> until <test> ».
Tu en connais des langages que l'on peut modifier sans recompiler ?
http://www.livelogix.net/logix/
Bruno Desthuilliers
2008-03-25 14:35:16 UTC
Permalink
Post by Denis Beauregard
Le 23 Mar 2008 21:08:06 GMT, BertrandB
Post by BertrandB
EN fait je cherche à savoir s'il est possible en php d'étendre la
syntaxe de celui-ci en rajoutant des tokens (éléments lexicaux)
supplémentaires.
Pour l'instant je ne crois pas mais parfois cantonade est de bon conseil.
PHP est un langage interprété. Je pense que les langages où on peut
redéfinir les opérateurs comme le C++ sont toujours compilés.
<mode="pédant">
Le fait d'être "interprété" ou "compilé" (concepts qui restent par
ailleurs à préciser, cf plus bas) n'est pas le propre d'un langage
(lequel est composé d'une grammaire et d'une syntaxe) mais d'une
implémentation d'un langage. Par exemple:
- pour common lisp, il existe des implémentations compilées, des
implémentations interprétées, et même des implémentation proposant les deux
- gcj compile (au moins un sous-ensemble de) Java en code "natif"
- il existe des interpréteurs C

De plus, concernant la distinction entre "compilé" et "interprété", la
frontière est floue. Par exemple, Java, Python, et quelques autres
langages utilisent une compilation intermédiaire vers un byte-code,
lequel est "exécuté" (interprété ?) par une machine virtuelle. Dans le
cas de Python, il existe une implémentation qui compile vers un
byte-code spécifique, une implémentation qui compile vers du byte-code
pour une machije virtuelle Java, et une implémentation qui compile vers
du byte-code pour le CLR (la machine virtuelle ms.NET)...
</mode>

Accessoirement, aussi bien Ruby (actuellement - enfin, aux dernières
nouvelles en tous cas - purement interprété) que Python supportent la
surcharge des opérateurs.

Dernier point: la surcharge des opérateurs, même si elle permet de
spécialiser la sémantique des opérateurs, n'a aucun impact sur la
*syntaxe* du langage.

HTH
Continuer la lecture sur narkive:
Loading...