Tcl - Podsumowanie składni języka Tcl
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/.