Interpretowanie poleceń

<< Kliknij, aby wyświetlić Spis treści >>

Nawigacja:  Dodatki > TCL > Składnia języka TCL >

Interpretowanie poleceń

Tcl interpretuje polecenia w dwóch krokach : rozbioru składniowego i wykonania. W fazie rozbioru składniowego Tcl stosuje reguły opisane w tym rozdziale aby podzielić polecenie na słowa i dokonać podstawień. Rozbiór składniowy jest dokonywany dokładnie w ten sam sposób dla każdego polecenia. Podczas rozbioru Tcl nie wnika w znaczenie słów jakie przetwarza, jedynie stosuje proste operacje na ciągach znaków, takie jak zamiana $a na napis przechowywany w zmiennej a; nie przywiązując nawet wagi do tego czy a zawiera liczbę, napis czy coś innego.

W fazie wykonania brane jest pod uwagę znaczenie słów w poleceniu. Tcl traktuje pierwsze słowo jako nazwę polecenia, sprawdzając czy takie polecenie zostało zdefiniowane i odszukuje procedurę polecenia, która realizuje jej funkcję. Jeśli polecenie zostało zdefiniowane to interpreter Tcl wywołuje jego procedurę, przekazując do procedury wszystkie słowa polecenia jako argumenty. Procedura ma pełną swobodę w interpretowaniu przekazanych jej argumentów, różne procedury w różny sposób wykorzystują swoje argumenty.

Oto kilka przykładów:

set a 122

W wielu przypadkach, tak jak w poleceniu set, argumenty mogą przyjmować dowolną postać. Polecenie set traktuje pierwszy argument jako nazwę zmiennej natomiast drugi argument jako wartość zmiennej. Polecenie „set 122 a" jest również poprawne, tworzy zmienną o nazwie 122 i podstawia do niej wartość a.

expr 24/3.2

Argumentem dla polecenia expr musi być poprawne wyrażenie.

eval {set a 122}

Argumentem polecenia eval jest inny skrypt Tcl. eval przekazuje tekst swojego argumentu do interpretera Tcl, gdzie następuje kolejna runda rozbioru składniowego i wykonania. Również dla innych poleceń, takich jak if lub while argumentem jest skrypt.

lindex {red green blue purple} 2

Pierwszym argumentem polecenia lindex jest lista składająca się z czterech wartości oddzielonych spacjami. Polecenie wybiera drugi element z listy i zwraca jego wartość jako wynik.

Jedną z najważniejszych rzeczy o których należy pamiętać pisząc skrypt Tcl jest to, że analizator składniowy dokonujący rozbioru nie przywiązuje żadnego znaczenia do słów z których składa się polecenie. Robi to dopiero procedura realizująca polecenie. Można rozważyć następujący przykład:

set x 4

set y x+10

Pierwsze polecenie przypisuje napis 4 do zmiennej x. Wartość zmiennej nie musi posiadać żadnej szczególnej postaci. Drugie polecenie po prostu pobiera napis x+10 i podstawia go jako wartość do zmiennej y. Po wykonaniu skryptu y posiada wartość znakową x+10, a nie wartość całkowitą 14. Jeśli w skrypcie powinno nastąpić zinterpretowanie (wyznaczenie) wartości, należy to zapisać jawnie:

set x 4

set y [expr $x+10]

Interpretacja jest wykonywana dwukrotnie w drugim poleceniu. Po pierwsze, drugie słowo polecenia jest zamknięte w nawias kwadratowy, co mówi interpreterowi Tcl aby wykonał skrypt ujęty w nawiasy i wyznaczony wynik potraktował jako wartość tego słowa. Po drugie, przed x został umieszczony znak $. Gdy Tcl analizuje polecenie set, to podstawia wartość zmiennej x pod $x. Jeśli znak $ zostałby pominięty, to wtedy argument set zawierałby napis x, co jest błędem składniowym. Po wykonaniu wartością y jest napis 14.