NAZWA¶
Tcl - Podsumowanie składni języka Tcl
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
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.
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 3tcl Tcl
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.