Règle 4

 

Guillemets

Si le premier caractère d’un mot est le double guillemet « " », la fin du mot est définie par un second double guillemet ; les points-virgules, crochets fermants, blancs, tabulations ou caractères de fin de ligne sont alors traités comme de simples caractères, faisant partie mot. Les substitutions de résultat de commande (règle 7), de variable (règle 8) ou de « \ » (règle 9) sont exécutées sur les caractères entre guillemets. Les guillemets eux-même ne font pas partie du mot.

Exemples


Discussions


ulis, 08-01-2005.

La règle 4 de JO n’est pas tout à fait complète : une chaîne entre guillemets ne s’arrête qu’au prochain guillemet non protégé. Et par protégé il faut entendre à la fois protégé par un antislash et protégé par son occurrence dans un script entre crochets. Le code suivant est parfaitement légal et ne pose aucun problème (sauf éventuellement de lisibilité) :

  set s "a b c d"
  puts "b c: [string first "b c" $s]"
   =>b c: 2

FP 2005-01-08

La règle me semble complète. Lorsque Tcl rencontre « "b c" », il a vu « [ ». Il est donc en train d’attendre non pas le second « " », mais un mot à la suite des deux mots « string » et « first », ou bien un « ] ». La règle 11 renforce ce principe de simple passage lors de la création des mots.

ulis

À la réflexion, il s’agit plutôt d’un flou dans la description.

Il me semble que ce flou permet de croire que le mécanisme est le suivant : lors de l'analyse d'une commande, Tcl identifie les mots (donc les constantes entre guillemets) et, après avoir identifié un mot, fait les substitutions nécessaires (caractères protégés par antislash, références, sous-scripts).

Alors que le mécanisme réel est le suivant : lors de l’analyse d’une commande, Tcl identifie les mots en faisant les substitutions au cours de cette identification (c’est bien ce que tu décris).

En conclusion :

  1. ce n’est pas évident à partir de la description ;
  2. cela a son importance ;
  3. il vaut mieux le préciser.

Je propose le commentaire suivant :

Dans une chaîne de caractères placée entre guillemets, les sous-scripts entre crochets sont des scripts à part entière et peuvent contenir des guillemets. Exemple : ...

(en y réfléchissant, ce que je disais au début sur les guillemets protégés n’est pas faux : c’est plutôt une autre manière de voir)


Douze règles