Page 1 sur 2

nouveau charabia

Posté : 28 juin 2011, 10:35
par sirakawa
Je ne parle pas encore le sanscrit, le pracrit ou l'hindoustani, aussi ce magnifique message me laisse-t-il d'autant plus perplexe que ce n'est pas la parenthèse fermante qui est en trop, mais un nom de variable dont j'avais oublié le $:
foreach ($bidules as bidule)
{
}
Parse error: syntax error, unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM in /var/www/htdocs/cohortes/repartir_avec_particularites.php on line 88

Re: nouveau charabia

Posté : 28 juin 2011, 10:54
par epommate2
T_PAAMAYIM_NEKUDOTAYIM c'est le double deux point (::)

foreach ($bidules as bidule)

bidule est un nom de classe, donc, comme il s'attend à trouvé un attribut, il pense que tu va lui indiquer via un double deux point (expecting T_PAAMAYIM_NEKUDOTAYIM) , or il trouve une parenthèse fermante ( unexpected ')' ) ...

En fait ... tu as juste oublié le $ devant bidule ...

Re: nouveau charabia

Posté : 28 juin 2011, 11:11
par sirakawa
Je connais l'erreur puisque je l'ai moi-même signalée.
En revanche, on peut s'interroger SUR LE TEXTE (ça a l'air de dire que c'est une constante Texte non définie qui est remplacée par son identificateur)
expecting T_PAAMAYIM_NEKUDOTAYIM)
Par ailleurs, ne programmant pas en php objet, je vois mal comment je pourrais avoir un identificateur de classe...)

Re: nouveau charabia

Posté : 28 juin 2011, 11:38
par Mazarini
Bonjour,

Généralement les erreurs de syntaxe ne sont pas très explicite.
Je soupçonne une optimisation de l'interprétation qui conduit à ne pas trop chercher à analyser les erreurs. En général je me contente de regarder autour de la ligne concernée. Avec l'habitude on finit par s'en sortir.

Re: nouveau charabia

Posté : 28 juin 2011, 12:41
par epommate2
Mais enfin si c'est très explicite ....

Une des première phase c'est le découpage du programme en token ( un nom de variable, un opérateur, un nom de fonction, ...). Puis viens l'analyse lexicale dans laquelle php tente de voir si le programme que tu lui soumet est bien une phrase de sa grammaire.

Par exemple, tu ne peux pas avoir

for = { if echo ) ::

=> Ce n'est pas une phrase de PHP

Comment il le sait ? De manière très simple, il a un ensemble de règle dont la première est :
-> un programme PHP est un ensemble de texte ou de <?php code_php ?> répété autant de fois qu'on veux

ensuite, fatalement, on a une règle quelque part :

-> un element foreach, c'est le token "foreach", puis une expression puis le token "as", puis une de variable.

-> une variable c'est soit $xxx, soit un_nom_de_classe :: une_variable

Comme de manière évidente, ton code est réduit à utiliser un_nom_de_classe::une_variable, il trouve bien un_nom_de_classe et après ....
catastrophe : il trouve une ")" au lieu de "::" ... Comme c'est la dernière règle qu'il a essayé et qui n'a pas marché, il interromps brutalement
l'analyse et te dis ce qui c'est passé ....

Pour lire les message d'erreur, il y a un truc, tous ce qui commence par T_, c'est un token... Et comment on connait la liste des token ? ici -> http://www.php.net/manual/fr/tokens.php
Par ailleurs, ne programmant pas en php objet, je vois mal comment je pourrais avoir un identificateur de classe...)
class objet {
	
	public static $a;
	
}

$toto = array(1,2,3);

foreach($toto as objet::$a){
	echo objet::$a;	
}

Re: nouveau charabia

Posté : 28 juin 2011, 13:10
par sirakawa
Je me demande si je parle français ou une langue inconnue de tous.
Je sais, pour en avoir écrit, comment fonctionne un analyseur syntaxique.
Je connais l'erreur puisque je l'ai moi-même signalée.
Je ne m'étonne que du texte d'erreur : T_PAAMAYIM_NEKUDOTAYIM)
dont je persiste à dire que c'est une constante Texte non définie qui est remplacée par son identificateur (tout simplement parce que Php semble préfixer ses textes de constantes par T_
Ce n'est pas que le texte du message ait une quelconque importance; il suffit de savoir à quelle ligne une erreur a été repérée, pour sortir sa bogoloupe... mais pour le principe un texte dans une langue connue serait nettement plus sympa...

Re: nouveau charabia

Posté : 28 juin 2011, 13:46
par epommate2
tout simplement parce que Php semble préfixer ses textes de constantes par T_
Ah bon ?

En fait, le problème, c'est peut être que tu ne parles pas hébreux ? http://fr.wikipedia.org/wiki/Paamayim_Nekudotayim

Re: nouveau charabia

Posté : 28 juin 2011, 20:13
par sirakawa
Passionnante constatation!!!
Effectivement, je parle pas hébreux, quoique j'aie appris l'hébreu dans une autre vie.
Mais je persiste à affirmer que T_bidule, c'est surement une erreur de définition de constante.
Je suppose que ce n'est pas le seul mot hébreu, connu des seuls hébreux, qu'emploie ce langage, mais c'est la seule fois où je n'ai pas eu un message d'erreur en anglais ...
M.B.

Re: nouveau charabia

Posté : 29 juin 2011, 06:30
par epommate2
Je ne comprend absolument pas quel est ton problème et même s'il y en a un ...
Mais je persiste à affirmer que T_bidule, c'est surement une erreur de définition de constante.
J'ai essayer d'expliquer que T_bidule, c'est le token bidule, ce n'est pas un message d'erreur .... bidule n'est pas une constante.
Je suppose que ce n'est pas le seul mot hébreu
A ma connaissance, si... Au moins dans les nom de token.

Re: nouveau charabia

Posté : 29 juin 2011, 07:47
par sirakawa
Le problème est qsu'il est fort choquant qu'on balance un mot hébreu comme explication d'une erreur, chacun sait que la communauté php est hébraïsante...
D'autant plus qu'il suffirait d'au moins 5 secondes pour modifier ce texte...

Re: nouveau charabia

Posté : 29 juin 2011, 08:01
par xTG
Okay... Donc j'ai appris l'anglais pour mieux m'en sortir en informatique.
Maintenant je vais prendre des cours d'Hébreu.

Re: nouveau charabia

Posté : 29 juin 2011, 10:40
par epommate2
Effectivment, vu que T_DOUBLE_COLON existe ...

There are two reasons this term will stay. It is a tip of the hat to
the amount of PHP work that came out of Israel, and it is a good
reminder that there are a lot of other languages in the world. People
whose first language is not English, myself included, are forced to work
with unfamiliar terms every day. I wouldn't mind having a few more
non-English identifiers in PHP actually.

Well, and a third reason, I like it.

-Rasmus
http://www.mail-archive.com/internals@l ... 48102.html

Re: nouveau charabia

Posté : 29 juin 2011, 12:18
par xTG
Beh moi je suis pas pour un langage en français... Quand je vois ce qu'est le WLangage il y a de quoi se jeter la corde au cou...

Re: nouveau charabia

Posté : 29 juin 2011, 12:30
par Berzemus
Pff, on voit bien que vous n'avez jamais travaillé sur du code avec des fonctions et des noms de variables en polonais. :twisted:

Je les ais même laissés, ça fait authentique. :mrgreen:

Re: nouveau charabia

Posté : 29 juin 2011, 13:57
par epommate2
Pff, on voit bien que vous n'avez jamais travaillé sur du code avec des fonctions et des noms de variables en polonais
J'ai vue roumain et ... chinois, mais uniquement dans les commentaires !
Beh moi je suis pas pour un langage en français...
Moi je suis pour, car je suis contre l'uniformité ! Donc vive les noms de token en hébreux.