Tcl(3tcl)

NAZWA
Tcl - Podsumowanie składni języka Tcl

OPIS

Następujące reguły definiują semantykę języka Tcl:

[1] Skrypt Tcl jest łańcuchem, zawierającym jedną, lub więcej komend. Średniki i nowe linie są separatorami komend, chyba że są zacytowane. Zamykające nawiasy są normalnie terminatorami komend.

[2] Komenda jest analizowana w dwóch krokach. Najpierw interpreter Tcl rozbija komendę na słowa i dokonuje opisanych niżej podstawień. Podstawienia te są dokonywane jednakowo dla wszystkich komend. Pierwsze słowo jest używane do lokalizowania procedury komendy, która wykona polecenie, a następnie wszystkie pozostałe słowa komendy są przekazywane do tej procedury. Procedura może interpretować każde ze swoich słów w dowolny sposób, np. jako liczbę całkowitą, nazwę zmiennej, listę, lub skrypt Tcl. Różne komendy różnie interpretują swoje słowa.

[3] Słowa komendy są rozdzielane białymi spacjami (poza nowymi liniami, które są separatorami komend).

[4] Pierwszy znak słowa to podwójny cudzysłów (``"''), ostatni również. Jeśli między cudzysłowami pojawią się średniki, nawiasy czy białe spacje, to będą one traktowane jak zwykłe znaki włączone w słowo. Podstawianie komend i zmiennych, oraz podstawianie ukośnikowe jest dokonywane na znakach międzycudzysłowowych w sposób opisany niżej. Podwójne cudzysłowy nie są zachowywane jako elementy słowa.

[5] Jeśli pierwszy znak słowa jest otwartym nawiasem klamrowym (``{''), to słowo jest kończone klamrą zamykającą, (``}''). Klamry zagnieżdżają się w słowie: każda otwarta klamra musi mieć klamrę zamykającą (jednak jeśli klamra jest cytowana lewym ukośnikiem, to jej działanie nie wymaga klamry zamykającej). Na znakach między klamrami nie dokonuje się żadnych podstawień, nie licząc podstawień lewy ukośnik-nowa linia. Słowo składa się dokładnie ze znaków między klamrami, nie licząc samych klamr.

[6] Jeśli słowo zawiera otwarty nawias kwadratowy (``[''), to Tcl dokonuje podstawienia komendy. Aby tego dokonać, woła rekursywnie interpreter Tcl, który przetwarza znaki znajdujące za nawiasem jako skrypt Tcl. Skrypt może zawierać dowolną liczbę komend i musi być zakończony nawiasem zamykającym (``]''). Wyniki skryptu (np. wynik ostatniej komendy) są podstawiane zamiast nawiasów, wraz ze znakami znajdującymi się między nimi. Może być dowolnie wiele podstawień w pojedynczym słowie. Podstawianie komend nie jest dokonywane na słowach ujętych w nawiasy klamrowe.

[7] Jeśli słowo zawiera znak dolara (``$'') to Tcl dokonuje podstawienia zmiennej: znak dolara i następujące znaki są zastępowane wartością zmiennej. Podstawienie zmiennej może przybrać jedną z postaci:

    $nazwa
         Nazwa jest nazwą zmiennej skalarnej; nazwa jest kończona dowolnym znakiem, który nie jest literą, cyfrą, lub podkreśleniem.

    $nazwa(indeks)
        Nazwa daje nazwę zmiennej tablicowej, a indeks daje nazwę jej elementu. Nazwa musi składać się tylko z liter, cyfr i podkreśleń. Na znakach indeksu dokonywane są podstawienia komend, zmiennych i lewych ukośników.

    ${nazwa}
        Nazwa jest nazwą zmiennej skalarnej. Może zawierać dowolne znaki poza zamykającymi nawiasami klamrowymi.

    W pojedynczym słowie może być wiele podstawień zmiennych. Na słowach, ujętych w klamry nie jest dokonywane podstawienie zmiennych.

[8] Jeśli w słowie znajduje się lewy ukośnik (``\''), to następuje podstawienie ukośnikowe. We wszystkich wypadkach, poza opisanymi niżej, ukośnik jest porzucany, a następujący znak jest traktowany jak zwykły i jest włączany w słowo. Umożliwia to włączanie znaków takich, jak podwójne cytaty, nawiasy zamykające i znaki dolara. Następująca tabela pokazuje sekwencje ukośnikowe, które są traktowane szczególnie, wraz z wartościami, które wchodzą w ich miejsce.

    \a  Dzwonek (0x7).

    \b  Backspace (0x8).

    \f  Form feed (0xc).

    \n  Nowa linia (0xa).

    \r  Powrót karetki (0xd).

    \t  Tabulacja (0x9).

    \v  Tabulacja pionowa (0xb).

    \<nowalinia>białaspacja
        Zamiast ukośnika, nowej linii i białej (białych) spacji, podstawiany jest pojedynczy znak spacji. Sekwencja ukośnikowa jest unikalna dlatego, że jest podstawiana w oddzielnym przedbiegu przed przetworzeniem komendy. Znaczy to, że będzie podstawiona nawet gdy nastąpi między nawiasami, a wynikająca spacja będzie traktowana jako separator słów (o ile nie jest w cudzysłowach lub klamrach).

    \\  Lewy ukośnik (``\'').

    \ooo
        Cyfry ooo (jedna, dwie, lub trzy z nich) dają rzeczywistą ósemkową wartość znaku.

    \xhh
        Cyfry szesnastkowe hh dają szesnastkową wartość znaku. Obecna może być dowolna liczba cyfr.

    Podstawianie ukośnikowe nie jest dokonywane na słowach ujętych w klamry, nie licząc podstawienia ukośnik-nowa linia, opisanego wyżej.

[9] Jeśli w miejscu, gdzie Tcl oczekuje pierwszego znaku pierwszego słowa komendy znajduje się znak ``#'', to znak ten i znaki za nim następujące, aż do nowej linii, są traktowane jako komentarz i są ignorowane. Znak komentarza ma znaczenie gdy znajduje się na początku komendy.

[10]
    Każdy znak jest przetwarzany przez interpreter Tcl tylko raz jako element tworzenia słów komendy. Na przykład, jeśli nastąpi podstawienie zmiennych, dalsze podstawienia na wartości zmiennej nie następują; wartość jest wstawiana dosłownie. Jeśli nastąpi podstawianie komend, to zagnieżdżone komendy są przetwarzane całościowo przez rekursywne wywołania interpretera Tcl; przed tym wywołaniem nie są robione żadne podstawienia. Podobnie po wywołaniu nie robi się żadnych dodatkowych podstawień.

[11]
    Podstawienia nie tyczą się ograniczników słów komendy. Na przykład podczas podstawiania zmiennych cała wartość zmiennej staje się częścią pojedynczego słowa, nawet jeśli wartość zmiennej zawiera spacje.