Polish translation of Man Tcl (see Endekalogue for other languages).
Tekst ten jest tłumaczeniem z niemieckiego, które z kolei jest tłumaczeniem z angielskiego 11 reguł określających semantyką języka Tcl. Ponieważ nie mieszkam w Polsce już wiele lat nie jestem całkiem pewien co do jakości tłumaczenia. W razie wątpliwości proszę o kierowanie się oryginałem dostępnym pod https://www.tcl-lang.org/man/tcl8.4/TclCmd/Tcl.htm . Także gramatyka i ortografia tego tekstu może pozostawiać wiele do życzenia. Proszę o korekty. Jest to tylko jedno z tłumaczeń, które mają podkreślać międzynarodowy charakter Tcl.
Składnię języka Tcl określają następujące reguły:
1. Polecenia. Skrypt Tcl jest łańcuchem znaków Unikodu, który zawiera jedno lub więcej poleceń języka Tcl. Polecenia są oddzielone średnikami lub powrotem karetki, jeśli nie są zamaskowane cudzysłowem. Zamykający nawias kwadratowy kończy polecenie w czasie zastępowania - chyba że jest on zamaskowany.
2. Ewaluacja. Wykonanie polecenia jest przeprowadzane w dwóch krokach: wpierw polecenie jest dzielone na słowa, na których dokonywane są zastąpienia; wykonuje się to jednakowo dla wszystkich poleceń. Pierwsze słowo służy jako nazwa polecenia, które jest wykonywane z argumentami złożonymi z następnych słów. Interpretacja tych słów jest wolna i zależna od polecenia, na przykład: liczba, nazwa zmiennej, lista, skrypt Tcl. Różne polecenia interpretują swoje słowa na różne sposoby.
3. Słowa. Słowa polecenia są dzielone przez tzw. Whitespace (Odstęp lub Tabulator - ale nie powrót karetki, który dzieli polecenia).
4. Podwójny cudzysłów. Jeśli pierwszym znakiem polecenia jest cudzysłów ("), to słowo kończy się następnym cudzysłowem. Średniki, nawiasy kwadratowe lub Whitespaces są traktowane wewnątrz tekstu między cudzysłowami jak normalne znaki i są częścią słowa. Na słowie dokonywane są zastąpienia poleceń, zmiennych i lewego ukośnika według opisu poniżej. Cudzysłowy nie stają się elementami słowa.
5. Nawiasy. Jeśli pierwszym znakiem słowa jest otwierający nawias klamrowy ({), to słowo kończy się nawiasem zamykającym (}). Nawiasy ({}) mogą występować wielokrotnie wewnątrz słowa (rekurencyjnie). Każdy otwierający nawias ({) musi posiadać nawias zamykający. (Nawiasy "zamaskowane" lewym ukośnikiem nie grają roli w równowadze nawiasów). Na znakach wewnątrz nawiasów ({}) nie są dokonywane żadne zastąpienia, za wyjątkiem lewego ukośnika z powrotem karetki (\newline). Średniki, powrót karetki i nawiasy kwadratowe nie są szczególnie interpretowane. Wynikowe słowo jest dokładnym łańcuchem znaków stającym między otwierającym i zamykającym nawiasem ({}). Skrajne nawiasy nie należą do słowa.
6. Zastępowanie poleceń. Wystąpienie w słowie otwierającego nawiasu kwadratowego równoważne jest z wywołaniem polecenia. Jego wykonanie zostaje zrealizowane przez rekurencyjne wywołanie interpretera TCL. Znaki występujące po tym nawiasie interpretuje on jako skrypt TCL. Skrypt taki może zawierać jedno lub więcej poleceń Tcl i musi kończyć się zamykającym nawiasem kwadratowym. Wynik działania tego skryptu (ostatniego polecenia w skrypcie) jest wstawiany w miejsce występowania nawiasów kwadratowych w taki sposób, że zastępuje je włącznie z ich zawartością. W jednym słowie może być dokonane dowolnie wiele zastąpień nawiasów kwadratowych. Zastępowanie nie ma miejsca, jeśli słowa znajdują się w nawiasach klamrowych ({}).
7. Zastępowanie zmiennej. Jeśli słowo zawiera znak dolara ($), następuje zastąpienie zmiennej. Znak dolara i następujące po nim znaki zastępowane są w słowie przez wartość zmiennej, w następujących formach:
$nazwa - nazwa jest nazwą zmiennej skalarnej. Nazwa kończy się pierwszym znakiem, który nie jest literą, cyfrą lub podkreśleniem (to ograniczenie może być zniwelowane przez zastosowanie zapisu ${nazwa})
$nazwa(indeks) nazwa jest nazwą tablicy. indeks jest nazwą elementu w tablicy. Nazwa może składać się wyłącznie z liter, cyfr i podkreślenia _. Na znakach łańcucha indeks dokonywane są zastąpienia poleceń, zmiennej i ukośnika lewego.
${nazwa} nazwa jest nazwą zmiennej skalarnej i może zawierać dowolne znaki z wyjątkiem nawiasu klamrowego }.
W słowie może następować dowolna ilość zastąpień zmiennych. Zastąpienia nie odbywają się wewnątrz nawiasu {}.
8. Zastępowane lewego ukośnika. Jeśli w słowie występuje lewy ukośnik (\), to następuje zamiana ukośnika. W każdym przypadku - oprócz niżej opisanych - ukośnik jest usuwany i następujące znaki są traktowane bez zmian. W ten sposób znaki ({}$) mogą być elementami słów bez wywoływania zastąpień. Szczególnymi zastąpieniami ukośnika są:
\a sygnał dźwiękowy (Bell, 0x7)
\b backspace 0x8
\f form feed 0xC
\n newline 0xA
\r powrót karetki 0xD
\t tabulator, 0x9
\v tabulator wertykalny, 0xB
\(newline)whitespace: Backslash, powrót karetki, wszystkie spacje i tabulatory po powrocie karetki zamieniane są na jedną spację
\ooo 1..3 cyfry systemu ósemkowego dają 8-bitową wartość znaku Unikodu, przez który są zastępowane.
\xhh cyfry systemu szesnastkowego dają 8-bitową wartość znaku Unikodu, przez który są zastępowane. Może występować dowolna ilość cyfr, jednak tylko dwie ostatnie są używane.
\uhhhh cyfry 1-4 systemu szesnastkowego dają 16-bitową wartość znaku Unikodu, przez który są zastępowane.
Zastępowanie lewego ukośnika nie jest dokonywane na słowach znajdujących się wewnątrz nawiasów {} - wyjątek stanowi \newline (patrz wyżej).
9. Komentarze. Znak # stojący w miejscu, w którym oczekiwany jest znak pierwszego słowa polecenia, jest ignorowany razem z następującymi po nim znakami aż do końca wiersza.
10. Kolejność zastąpień. Przy grupowaniu słów każdy znak jest przetwarzany przez parser TCL dokładnie jeden raz. Na przykład, jeśli dokonywana jest zamiana zmiennej, to na powstałym w ten sposób nowym słowie nie są dokonywane żadne inne zamiany. Bezpośrednio po wykonaniu zamiany polecenia, następuje jego wykonanie przez rekurencyjne wywołanie interpretera Tcl. Przed takim wywołaniem - a także po nim - nie są dokonywane żadne zastąpienia. Zamiany są dokonywane w kolejności od lewej do prawej. Przed każdą następną zamianą, aktualnie wykonywana musi zostać doprowadzona do końca.
11 Zastępowania i granice słowa Zamiany nie mają wpływu na granice polecenia. Na przykład w czasie zamiany zmiennej kompletna wartość zmiennej (ciągu znaków) staje się częścią pojedynczego słowa, nawet jeśli zawiera ona spacje.
Tłumaczenia dokonał Artur Trzewik. Poprawki Wojciech Kocjan. Szereg poprawek interpunkcyjnych i stylistycznych ZB.
Słowniczek (pl-en):
zastąpienie - substitution zagnieżdżony - nested powrót karetki - newline polecenie - command