Catégorie:Langage Tcl
Tool Command Language (abréviation : Tcl) est un langage de script initialement conçu en 1988 par John Ousterhout et son équipe � l'Université de Berkeley (Californie). Il s'inspire principalement des langages C, Lisp, Shell et Awk. Ce langage � typage dynamique est multi-plateforme, extensible, facile � apprendre et repose sur onze règles syntaxiques. Tcl s'interface très aisément avec le langage C, ce qui lui permet de servir par exemple d'interprète embarqué dans des applications.
Syntaxe et sémantique
La syntaxe suit le modèle d'un shell. Un script de Tcl contient une ou plusieurs commandes. Une commande se compose de un ou plusieurs mots, qui sont séparés par des espaces.
- Les "" servent � délimiter les chaînes de caractères (avec interprétation des variables).
- Les {} peuvent jouer le même rôle (sans interprétation des variables) sauf dans certains cas.
- Les {} servent � délimiter les structures de contrôles if, while, proc, etc.
- Les [] délimitent les fonctions.
- Les () indiquent les indices des tableaux.
Le premier mot est le nom de la commande. Les mots suivants sont les paramètres.
nomDeLaCommande par1 par2 par3 ...parN
Au lieu d'un paramètre, on peut mettre entre crochets [ ... ] une autre commande. Celle-ci est interprétée en premier et le résultat devient le paramètre de la commande supérieure. Entre accolades { ... } on peut mettre comme paramètre une séquence de mots qui n'est pas interprétée, mais utilisée directement. Les transferts de paramètres se font par valeur. La transmission par référence se fait sans mettre $ devant le nom de la variable, et par la commande upvar dans le corps de la procédure appelée. Les constantes ou chaînes de caractères sont indiquées telles quelles.
Type des variables
Les variables ne sont pas typées explicitement. On peut néanmoins en définir cinq :
- Les booléens : 0/no/off (faux) et 1/yes/on/ (vrai) ou un nombre différent de 0
- Les nombres : 1 0 3.14 1.e-10
- Les chaînes de caractères : Bonjour , "Madame De Labas" , 32 , {z 3.14}
- Les listes : de booléens, nombres, chaînes ou listes (on peut imbriquer les listes)
- Les tableaux associatifs : T(clef) M(2,3) qui peuvent contenir les 4 types précédents, même mélangés.
Les quatre premiers types sont dits types scalaires, ils peuvent donc être passés par valeur et retournés � l'appel d'une procédure. Ces types scalaires sont convertis automatiquement dans le type adéquat, par exemple, une chaîne de caractères peut devenir une liste :
% set fruits "pomme orange banane"
% puts [lindex $fruits end]
banane
- Les nombres sont traités comme des chaînes de caractères sauf dans les expressions arithmétiques où ils sont d'abord convertis en binaire.
- Les valeurs booléennes sont 0 (faux) ou non 0 (vrai)
- Une fonction peut retourner une chaîne ou une liste, mais pas un tableau qui n'est pas une variable scalaire. Ceux-ci peuvent toutefois être transmis par référence. Les dictionnaires (nouveauté de la version 8.5) sont un nouveau type scalaire, pouvant donc être fournis comme paramètre d'une procédure, et même retournés.
- Les tableaux associatifs clé-valeur implémentent un type table de hachage sont très rapides et peuvent être très grands. Une clé, indice du tableau, peut être une chaîne de caractères ou une liste, sans limite de taille. On peut, par exemple, utiliser un texte de 10000 lignes comme clé.
Structures de contrôle
while { uneExpressionLogique } {
uneCommande
uneCommande
....
}
if {$x<0} {
set x 0
} elseif { $x<5 } {
set x 5
} else {
set x 10
}
for {set i 0} {$i<10} {incr i} {
puts $i
}
foreach i [list "youpii" "aujourd'hui" "il fait beau" "bravo !" "bravo !"] {
puts $i
}
foreach a $listeA b $listeB c $listeC {
puts "$a $b $c"
}
foreach {x y} [list M Gaston Mlle Jeanne M Robert Mme Raymonde] {
puts "$x $y"
}
set couleur bleu
switch $couleur {
rouge { puts "FF0000" }
bleu { puts "0000FF" }
vert { puts "00FF00" }
blanc { puts "FFFFFF" }
noir { puts "000000" }
default { puts "inconnu" }
}
Articles dans la catégorie « Langage Tcl ».
Cette catégorie contient 73 pages, dont les 73 ci-dessous.
$ABCDEF |
F cont.GHIJLNOP |
P cont.RSTUVW |