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 http://www.tcl.tk/man/tcl8.4/TclCmd/Tcl.htm. Także gramatyka i ortografia tego tekstu może pozostawiają wiele do życzenia. Proszą o korekty. Jest to tylko jedno z tłumaczeń które mają podkreślają międzynarodowy charakter Tcl. Składnia języka Tcl jest zdefiniowana następującymi regułami: '''1. Polecenia.''' Skrypt Tcl jest łańcuchem znaków Unikodu, który zawiera jedno lub wiele poleceń języka Tcl. Polecenia są oddzielone przez średnik lub powrót 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. Na początku polecenie jest dzielone na słowa, na których dokonywane są zastąpienia. To wykonywane jest 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, jednak nie powrót karetki, która dzieli polecenia). '''4. Cudzysłów podwójny.''' Jeśli pierwszym znakiem polecenia jest cudzysłów ("), to słowo kończy się następnym cudzysłowem. Średniki, nawisy kwadratowe lub Whitespaces są traktowane wewnątrz tekstu miedzy cudzysłowami jak normalne znaki i są częścią słowa. Na słowie dokonywane są zastąpienia poleceń, zmiennych i ukośnika lewego według opisu poniżej. Cudzysłowy nie stają się elementami słowa. '''5. Nawiasy.''' Jeśli pierwszym znakiem słowa jest nawias ({) to słowo kończy się pasującym nawiasem (}). Nawiasy ({}) mogą występować wielokrotnie wewnątrz słowa (rekursywnie). Każdy otwierający nawias ({) musi posiadać nawias zamykający. (Nawiasy zamaskowane ukośnikiem lewym nie grają roli w równowadze nawiasów). Na znakach wewnątrz nawiasów ({}) nie są dokonywane żadne zastąpienia, za wyjątkiem ukośnika lewego 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ń.''' Jeśli w słowie występuje nawias kwadratowy to dokonywane jest zastąpienie poleceń. Zastępowania są wykonywane przez interpreter TCL rekursywnie, znaki po otwartym nawiasie kwadratowym interpretowane są jako skrypt TCL. Taki skrypt wewnątrz kwadratowych nawisów może zawierają jedno lub wiele poleceń Tcl i musi kończyć się zamykającym nawiasem kwadratowym. Wynik tego skryptu (ostatniego polecenia w skrypcie) jest wstawiany w miejsce występowanie kwadratowych nawiasów tak że zastępuje on nawias kwadratowy włącznie z jego 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łowo znajdują się w nawiasach ({}) '''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 (ta restrykcja może być zniwelowana 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ąpienie poleceń, zmiennej i ukośnika lewego. ${nazwa} nazwa jest nazwą zmiennej skalarnej i może zawierać dowolne znaki z wyjątkiem nawiasu }. W słowie może następować dowolna ilość zastąpień zmiennych. Zastąpienie nie odbywają się wewnątrz nawiasu {}. '''8. Zastępowane ukośnika lewego.''' Jeśli w słowie występuje ukośnik lewy (\), następuje zamiana ukośnika. W każdym oprócz niżej opisanych przypadkach ukośnik jest usuwany i następujące znaki są traktowane bez zmian. W ten sposób mogą znaki ({}g$) być elementami słów bez wywoływanie 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 ukośnika lewego 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 znakami do końca wiersza. '''10. Kolejność zastąpień.''' Każdy znak jest przetwarzany przez parser TCL przy grupowaniu słów dokładnie jeden raz. Jeśli na przykład jest dokonywana zamiana zmiennej to na powstałym przez ten sposób nowym słowie nie są dokonywane żadne inne zamiany. Jeśli następuje zamiana polecenia to, polecenie zamknięte w g jest dokonywane bezpośrednio przez rekursywnie wywołanie interpretera Tcl. Przed rekursywnym wywołaniem i także po nim nie są dokonywane żadne zastąpienia. Zamiany są dokonywane w kolejności od lewej do prawej, każda zamiana jest dokonywana aż do końca, przed następną zamianą. '''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. Polish translation of Man Tcl (see [Endekalogue] for other languages). Please use UTF-8 charcter coding in your broser to see corect characters.