Sommaire Carte Index Recherche Nouvelles Archives Liens A propos
[Barre Superieure]
[Barre Inferieure]
[Brent B. Welch]
Brent B. Welch

L´auteur:
Brent Welch s'amuse à construire le site web www.scriptics.com, et à y inclure une base de donnée commentée des URL relatifs à Tcl (Le centre de Ressources Tcl) et une infrastructure de commerce électronique pour le produit TclPro. Il a aussi écrit plusieurs grosses applications en Tcl/Tk parmi lesquelles le serveur web TclHttpd web server, qui supporte www.scriptics.com, l'interface utilisateur de Exmh et l'éditeur HTML webtk. Il est l'auteur du livre "Programmation pratique en Tcl et Tk". B. Welch à reçu un diplome d'ingénieur en Aéronautique de l'Université de Boulder au Colorado en 1982, un Master et un PhD en Informatique de l'université de Berkley en Californie en 1986 et 1990. Auparavant, il était un membre du personnel de recherche au PARC Xerox et travaillait sur les systèmes distribué, avant d'être un membre de l'équipe Tcl/Tk des laboratoires de Sun Microsystems. Il est aussi membre de l'ACM et de l'IEEE Computer Society. Page Personelle: http://www.beedub.com/

Sommaire:

  1. Introduction à la syntaxe de Tcl
  2. Un petit Exemple
  3. Groupement et Substitution
  4. Autre Exemple
  5. Execution de la Commande
  6. Un dernier exemple
  7. Pour plus d'information

La syntax du langage Tcl

[Ilustration]

Résumé:

Cet article explique les concepts de base du langage Tcl ainsi que la syntaxe de ce dernier. Vous verrez que n'importe qui peut programmer avec ce langage reposant sur une logique simple. Vous comprendrez aussi pourquoi celui-ci est extensible à l'infini.



 

Introduction à la syntaxe de Tcl

Pour un langage scriptique, Tcl a une syntaxe très simple.

cmd arg arg arg
Une commande Tcl est formée de mots séparés par des espaces. Le premier mot est le nom de la commande, et le reste sont les arguments de cette commande.
$toto
Le caractère ($) indique que l'on veut la valeur de la variable. Dans cet exemple, le nom de la variable est toto. La chaine $toto sera substituée par la valeur de la variable toto.
[clock seconds]
La chaine entre crochets sera remplacée par le résultat de la commande à l'interieur de ces derniers. Par exemple, si vous voulez passer à une commande le résultat d'une autre en argument utilisez cette syntaxe. Ici la commande est "clock seconds", qui donne le temps actuel en secondes.
"some stuff"
Les guillemets marquent un groupe de mots qui sera considéré comme un et un seul argument pour une commande. Le caractère dollar et les crochets seront interprétés à l'intérieur des guillemets.
{some stuff}
De même, les accolades marquent un groupe de mots, cependant les mots à l'interieur ne seront pas interprétés.
\
Le backslash (\) est utilisé pour obtenir des caractères speciaux. Par exemple, \n donnera un retour à la ligne. La backslash est aussi utilisé pour desactiver le sens de certains caractères spéciaux du langage Tcl, comme le dollar, l'accolade, le crochet, le guillemet.
 

Un petit Exemple

Ci dessous, un petit exemple de commande Tcl qui affiche l'heure actuelle. Trois commandes Tcl sont utilisées: set, clock, et puts. La commande set definit et assigne une valeur à une variable. La commande clock permet de manipuler le temps. La commande puts affiche des valeurs.

set seconds [clock seconds] puts "The time is [clock format $seconds]"

Note: Vous remarquerez qu'il ne faut pas utiliser $ quand on affecte une valeur à une variable. Utilisez $ uniquement lorsque vous voulez la valeur d'une variable. La variable seconds n'est pas obligatoire dans le précédent exemple. Vous pouvez afficher l'heure courante par une commande:

puts "L'heure courante est [clock format [clock seconds]]"

 

Groupement et Substitution

La syntaxe de Tcl est interprété en trois phases: Regroupement des arguments, substitution, et execution de la commande.

La syntaxe de Tcl est interprété en trois phases: Regroupement des arguments, substitution, et execution de la commande.

  1. Regroupement des arguments . Tcl doit déterminer quels sont les arguments à passer à la commande. Dans le cas trivial, des espaces délimitent les arguments. Comme nous l'avons fait remarquer tout à l'heure, il y a des caractères spéciaux permettant de regrouper plusieurs mots en un seul argument. Dans l'exemple précédent, les guillemets étaient utilisés pour regrouper les mots à l'intérieur d'un seul argument pour la commande puts.

  2. Substitution. Apres le regroupement des arguments, Tcl effectue une substitution de chaine de caractères. Plus simplement, il remplace $foo par la valeur de la variable foo, et remplace les commandes entre crochets par le résultat de ces dernières. Le fait que la substitution soit faite après le regroupement est crucial. Cette séquence garantie que des valeurs inhabituelles neccompliquent pas la structure de la commande.

  3. Execution de la Command . Après la substitution, Tcl utilise le nom de la commande comme une clé pour acceder à celle ci dans une table de commande. Tcl execute alors une fonction interne écrite en C indiquée par la clé dans la table Vous pouvez aussi écrire vos propres commandes Tcl. Il y a une API très simple pour le passage des arguments ainsi que pour la gestion des erreurs.
 

Autre Exemple

Voici un autre exemple:

set i 0 while {$i < 10} { puts "$i squared = [expr $i*$i]" incr i }

Ici, les accolades permettent de regrouper les expressions internes à celles-ci sans qu'elles soient interprétées. La commande while n'est pas une commande spéciale du langage Tcl. Elle est traitée comme n'importe qu'elle autre commande. L'implémentation de la commande while requiert comme premier argument une expression, et comme second argument des commandes Tcl. Donc deux arguments: une expression booléenne qui contrôle l'arrêt de la boucle et les commandes à executer dans cette boucle.

Nous avons aussi deux expressions mathématiques: la comparaison booléenne et la multiplication. La commande while évalue automatiquement son premier argument comme une expression. Dans les autres cas, vous devez utiliser la commande expr pour executer une expression mathématique.  

Execution de la Commande

A la fin, Tcl appelle quelque chose d'autre pour faire le gros du travail. Nous avons vu que Tcl utilise expr pour les fonctions mathématiques, puts pour gérer les fonctions de sortie , et set pour assigner les variables. Ces commandes Tcl sont implémentées par des fonctions C et sont enregistrées dans le langage Tcl. Les fonctions C reçoivent comme arguments des chaines de caractères via Tcl et retournent leur résultat en chaine de caractères. Il est très facile d'écrire des fonctions C pour Tcl. Elles peuvent faire énormement de choses (cela va d'un accès à une base de données, à créer une interface homme-machine. Tcl, le langage n'a pas de connaissance intrinsèque de ce que font les commandes. Il regroupe juste les arguments, fait des subtitutions et execute des commandes.  

Un dernier exemple

Voici la fonction factorielle:

proc fac {x} {
    if {$x <= 0} {
        error "Invalid argument $x: il doit être positif"
    } elseif {$x == 1} {
        return 1
    } else {
        return [expr $x * [fac [expr $x-1]]]
    }
}


 

Pour plus d'information

Un grand merci à Brent Welch. et à scriptics
Site Web maintenu par l´équipe d´édition LinuxFocus
© Brent B. Welch
LinuxFocus 1999