tcl:index
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tcl:index [2023/10/09 13:48] – [Règle 12 — Substitutions et limites de mot] CrazyCat | tcl:index [2023/10/20 15:55] (Version actuelle) – CrazyCat | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== TCL ====== | ====== TCL ====== | ||
- | Initialement au nombre de onze, les douze règles — plus familièrement appelées Dodécalogue — définissent la syntaxe et la sémantique du langage Tcl. La cinquième règle a été introduite à partir la version 8.5.0 du langage. | + | Initialement au nombre de onze, les douze règles — plus familièrement appelées |
- | ===== Règle 1 — Commandes ===== | + | |
- | Un script TCL est une chaîne contenant une ou plusieurs commandes. Les points-virgule et les caractères RL (Retour à la Ligne) sont des séparateurs de commande sauf s’ils sont commentés comme décrit ci-dessous. Les crochets fermés sont des terminateurs de commande pendant la substitution de commande (voir ci-dessous) à moins qu'ils soient mis en commentaire. | + | |
- | ===== Règle 2 — Évaluation ===== | + | |
- | Une commande est évaluée en deux étapes. D' | + | |
- | ===== Règle 3 — Mots ===== | + | |
- | Les mots d’une commande sont séparés par des espaces (excepté les caractères RL qui sont les séparateurs de commande). | + | |
- | ===== Règle 4 — Guillemets ===== | + | |
- | Si le premier caractère d’un mot est un guillemet (« " ») alors le mot sera terminé par le prochain guillemet. Si des points-virgule, | + | |
- | ===== Règle 5 — Développement d’argument ===== | + | |
- | If a word starts with the string “{*}” followed by a non-whitespace character, then the leading “{*}” is removed and the rest of the word is parsed and substituted as any other word. After substitution, | + | |
- | ===== Règle 6 — Accolades ===== | + | |
- | Si le premier caractère d'un mot est une (« { ») accolade ouverte, alors le mot sera terminé par l’accolade fermante (« } ») correspondante. Imbrication d' | + | |
- | ===== Règle 7 — Substitution de commandes ===== | + | |
- | Si un mot contient un crochet ouvert (« [ ») alors TCL exécute une substitution de commande. Pour se faire, il utilise l’interpréteur TCL de manière récursive pour traiter les caractères entre crochets comme un script TCL. Le script peut contenir n’importe quel nombre de commandes et doit se terminer par un crochet fermé (« ] »). Le résultat du script (c-à-d. le résultat de sa dernière commande) est substitué dans le mot au lieu des crochets et de tous les caractères entre eux. Il peut y avoir n’importe quel nombre de substitutions de commande dans un unique mot. La substitution de commande n’est pas exécutée sur les mots entre accolades. | + | |
- | ===== Règle 8 — Substitution de variables ===== | + | |
- | Si un mot contient un symbole dollar (« $ ») alors TCL exécute une substitution de variable : le symbole dollar et les caractères suivants seront remplacés dans le mot par la valeur d’une variable. La substitution de variable peut prendre n’importe laquelle des formes suivantes : | + | |
- | * $nom nom est le nom d’une variable scalaire ; le nom est une suite d’un ou plusieurs caractères qui peuvent être une lettre, un chiffre, un souligné, ou des séparateurs d’espace de noms (namespace) (deux points redoublés («::») ou plus). | + | |
- | * $nom(index) nom donne le nom d’un tableau de variables et index donne le nom d’un élément dans ce tableau. nom doit contenir seulement des lettres, des chiffres, des soulignés, et des séparateurs d’espace de noms, il peut être une chaîne vide. Les substitutions de commandes, de variables, et d’antislash sont exécutées sur les caractères d' | + | |
- | * ${nom} nom est le nom d’une variable scalaire. Il peut contenir n’importe quels caractères exceptés une accolade fermante. Il peut y avoir n’importe quel nombre de substitutions de variables dans un unique mot. La substitution variable ne sera pas exécutée sur des mots entre accolades. | + | |
- | ===== Règle 9 — Substitution d' | + | |
- | Si un antislash (« \ ») apparaît dans un mot alors une substitution d' | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | * < | + | |
- | La substitution d’antislash n’est pas exécutée sur des mots entre accolades, sauf pour \<retour à la ligne> comme c’est indiqué ci-dessus. | + | <nspages -r=1 -subNs |
- | ===== Règle 10 — Commentaires ===== | + | |
- | Si le signe dièse (« # ») apparaît à un endroit où TCL attend le premier caractère du premier mot d’une commande, alors le caractère dièse et les caractères qui le suivent, jusqu’au prochain retour à la ligne, seront traités comme commentaire et ignorés. Le caractère de commentaire n’est significatif que s'il apparaît au début d'une commande. | + | |
- | ===== Règle 11 — Ordre de substitution ===== | + | |
- | Chaque caractère est traité exactement une seule fois par l’interpréteur TCL en tant qu’élément de création des mots d’une commande. Par exemple, si une substitution de variable se produit, alors aucune substitution supplémentaire ne sera faite sur la valeur de cette variable : sa valeur sera insérée in extenso dans le mot. Si une substitution de commande se produit, alors la commande imbriquée est traitée entièrement par un appel récursif de l’interpréteur TCL : aucune autre substitution ne sera faite avant cet appel récursif et aucune substitution additionnelle ne sera exécutée sur le résultat du script. | + | |
- | + | ||
- | Les substitutions ont lieu de gauche à droite et chaque substitution est évaluée complètement avant d’essayer d’évaluer la suivante. Ainsi, la commande `set y [set x 0][incr x][incr x]` affectera toujours la valeur, 012 à la variable y. | + | |
- | ===== Règle 12 — Substitutions et limites de mot ===== | + | |
- | Les substitutions n’affectent pas les bornes des mots d’une commande. Ainsi, pendant la substitution d’une variable, l’intégralité de la valeur de la variable devient une partie unique du mot, même si la valeur de cette variable contient des espaces. | + | |
- | <nspages -r -exclude | + |
tcl/index.1696859290.txt.gz · Dernière modification : 2023/10/09 13:48 de CrazyCat