« Installazione in FreeBSDAppunti di Tcl/TkTcl: Commenti »

Tcl

Sintassi dei comandi

La sintassi di Tcl è simile a quella delle shell e molto semplice. La manpage Tcl(n) la descrive esaurientemente. n è la sezione del manuale Unix che contiene nuovi comandi (n sta per new). Ogni comando ha un nome che è seguito dai suoi argomenti sulla stessa riga, separati da caratteri bianchi. Ogni comando viene implementato da una funzione C con lo stesso nome del comando, presente nella libreria Tcl, alla quale vengono passati gli argomenti specificati. In Tcl ci sono solo comandi o procedure e tutti i comandi ritornano una stringa, eventualmente la stringa vuota.

Ad esempio il comando puts(n) scrive una stringa, per default sul canale di output standard (stdout) e, ancora per default, la fa seguire da un accapo (newline). Su UNIX il newline su stdout corrisponde al solo carattere di codice 10, detto anche line feed (lf), in Windows invece i caratteri sono due: cr (codice 13) e lf (codice 10), mentre sul Macintosh solo cr, che sta per carriage return (ritorno a carrello). Non occorre tuttavia preoccuparsi di queste differenze, in quanto Tcl genererà il codice giusto a seconda della piattaforma su cui gira.

% puts "Hello World"

% è il prompt di tclsh(1). Quello che dovete digitare si trova dopo il prompt sulla stessa linea. Le risposte dell'interprete non sono invece precedute dal prompt, a meno che non siate voi a farlo stampare esplicitamente. Qui l'unico argomento è la stringa "Hello World", racchiusa tra apici. Questo è necessario perché la stringa è costituita da due parole. Se omettiamo gli apici, puts(n) interpreterebbe il primo argomento come il nome del canale di output:

% puts Hello World
can not find channel named "Hello"

Se l'argomento è costituito da una sola parola, gli apici sono opzionali, in quanto l'argomento viene già interpretato come unico:

% puts Tcl
Tcl

Oltre agli apici si possono utilizzare anche le parentesi graffe per indicare che un argomento composto da più parole è da considerarsi unico:

% puts {due parole}
due parole

Esiste tuttavia una differenza tra i due tipi di delimitatori che sarà chiara quando parleremo di Sostituzione e valutazione.

Ogni comando deve essere terminato da un newline e stare su una linea a sé stante, a meno che non si usi il ; per separare i vari comandi tra loro:

% puts uno ; puts due
uno
due

È anche possibile spezzare i comandi su più linee, utile nel caso di comandi particolarmente lunghi (con tante opzioni), utilizzando il carattere di continuazione di linea \:

comando arg1 \
arg2
equivale a
comando arg1 arg2

Ad esempio:

% puts "una stringa\
su due righe"
una stringa su due righe
% puts stderr \
  "un lungo messaggio di errore"
un lungo messaggio di errore
% puts "notare che\
     i bianchi all'inizio di una linea continuata\
           vengono compressi in un solo spazio"
notare che i bianchi all'inizio di una linea continuata vengono compressi in un solo spazio

Infine se il primo argomento di puts(n) è -nonewline, puts(n) non va a capo dopo aver stampato la stringa argomento. Ad esempio per stampare un prompt come quello di default di tclsh(1):

puts -nonewline "% "

« Installazione in FreeBSDAppunti di Tcl/TkTcl: Commenti »