door Over de auteur: Brent Welch vermaakt zich met het sleutelen aan zijn website www.scriptics.com waarin onder andere een database is te vinden met referenties -voorzien van commentaar- naar Tcl gerelateerde URLs (het: "Tcl Resource Center") en de e-commerce infrastructuur voor het product Inhoud: |
Kort:
Dit artikel behandelt het basisconcept en de syntaxis van de taal Tcl.
In vergelijking met andere script talen heeft Tcl een eenvoudige syntaxis.
cmd arg arg arg
$foo
foo
.[clock seconds]
clock seconds
, wat de huidige tijd in seconden geeft."meerdere woorden"
{meerdere woorden}
\
Hieronder een Tcl commando dat de huidige tijd laat zien. Het maakt gebruik van drie Tcl commando's: set, clock
en puts
. Het set
commando wijst waarden toe aan variabelen. Het clock
commando kan omgaan met tijdsgegevens en puts
kan waardes afdrukken.
set seconden [clock seconds] puts "Het is [clock format $seconden]"
Merk op dat het dollarteken niet wordt gebruikt bij het toekennen aan een variabele. De variabele seconden
is niet nodig in dit voorbeeld. Het afdrukken kan met één commando:
puts "Het is [clock format [clock seconds]]"
De Tcl syntaxis is erop gericht de parser in drie stappen te laten evalueren: groeperen van argumenten, substitueren van resultaten en commando's aanroepen.
puts
commando.
$foo
met de waarde van foo
en vervangt geneste commando's (binnen de vierkante haken) met het resultaat ervan. Belangrijk is hier dat substituties worden gedaan ná het groeperen. Hierdoor wordt vermeden dat ongebruikelijke waarden de structuur in een commando compliceren.
In dit voorbeeld worden accolades gebruikt voor het groeperen van argumenten zonder dat hierin substitutie plaatsvindt. Het is de implementatie van het
set i 0 while {$i < 10} { puts "$i squared = [expr $i*$i]" incr i }
while
commando die weet dat het eerste argument een expressie is en het tweede nog meer Tcl commando's. De accolades groeperen dus twee argumenten: de logische expressie die de lus stuurt en de commando's binnen de lus.
Verder zien we twee rekenkundige expressies: de vergelijking en de vermenigvuldiging. Het while
commando interpreteert het eerste argument automatisch als zijnde een expressie. In andere gevallen moet men de expressie expliciet aangeven middels het expr
commando om een rekenkundige evaluatie te forceren.
expr
aanroept voor het afhandelen van rekenkundige expressies, puts
voor het afhandelen van uitvoerfuncties en set
om waarden aan variabelen toe te kennen. Deze Tcl commando's zijn geïmplementeerd door C-functies die zichzelf aanmelden bij Tcl. Deze functies accepteren de argumenten als strings en retourneren een nieuwe string als resultaat. Het is heel eenvoudig om dit soort C functies te maken. De functie kan van alles doen. Van het benaderen van databases tot het creëren van een grafische gebruikersinterface. De taal Tcl weet niet echt wat het commando doet. Het groepeert slechts argumenten, substitueert resultaten en roept commando's aan.
proc fac {x} { if {$x < 0} { error "Ongeldig argument $x: moet een positief geheel getal zijn" } elseif {$x <= 1} { return 1 } else { return [expr $x * [fac [expr $x-1]]] } }
Site onderhouden door het LinuxFocus editors team © Brent B. Welch LinuxFocus 1999 |
1999-10-11, generated by lfparser version 0.6