This is a translation of the eleven rules of Tcl (see Endekalogue) into Finnish. As you can see, Finnish is really quite different from most other languages.
Seuraavat säännöt määrittelevät syntaksin ja semantiikan Tcl-kielestä:
1) Komennot. Tcl-skripti on merkkijono, joka sisältää yhden tai useamman komennon. Puolipisteet ja rivinvaihdot toimivat komentoerottimina elleivät ole lainattu alla kuvatuilla tavoilla. Kiinninäiset hakasulut toimivat komentolopettajina komentokorvauksen aikana (kts. alhaalla), elleivät ole lainauksen sisällä.
2) Arviointi. Komentoarviointi tapahtuu kahdessa vaiheessa. Ensimmäiseksi Tcl-tulkki hajottaa komennon sanoiksi ja toteuttaa korvauksia (substituutioita) alla kuvatulla tavalla. Nämä korvaukset tapahtuvat samalla tavalla kaikkien komentojen kanssa. Ensimmäinen sana käytetään paikallistaakseen komentoproseduurin, joka toteuttaa komennon, sitten kaikki komennon sanat ohjataan komentoproseduurille. Komentoproseduuri on vapaa tulkitsemaan kaikkia näitä sanoja millä tahansa haluamallansa tavalla, kuten kokonaislukuina, muuttujaniminä, listoina tai Tcl-skripteinä. Erilaiset komennot tulkitsevat sanojaan eri tavoilla.
3) Sanat. Komennon sanat erotellaan tyhjillä välimerkeillä (white space) (lukuunottamatta rivinvaihtoja, jotka toimivat komentoerottimina).
4) Lainausmerkit. Jos sanan ensimmäinen merkki on lainausmerkki ("), sana lopetetaan seuraavaan lainausmerkkiin. Jos puolipisteitä, kiinninnäisiä hakasulkuja tai tyhjiä välimerkkejä (mukaanlukien rivinvaihtoja) esiintyvät lainausmerkkejen sisällä, niitä kohdellaan tavallisina merkkeinä ja sisällytetään sanaan. Komentokorvauksia, muuttujakorvauksia ja kenoviivakorvauksia suoritetaan lainausmerkkien sisällä oleviin merkkeihin kuten alhaalla kuvataan. Lainausmerkkejä ei säilytetä osana sanaa.
5) Aaltosulut. Jos sanan ensimmäinen merkki on avoin aaltosulku ({), sana lopetetaan vastaavaan sulkevaan aaltosulkuun (}). Aaltosulut voivat toimia sisäkkäin sanassa: jokaiselle avoimelle aaltosululle pitää löytyä vastaava sulkeva aaltosulku (jos kuitenkin avointa- tai sulkeva aaltosulkua edeltää kenoviiva sitä ei lasketa mukaan etsiessään vastaavaa aaltosulkua). Mitään korvauksia ei suoriteta merkeillä aaltosulkujen sisällä paitsi kenoviiva-rivinvaihto -korvauksia, joita kuvaillaan alhaalla. Puolipisteet, rivinvaihdot, sulkevat hakasulut ja tyhjät välimerkit eivät saa mitään erityisät tulkintaa. Sana koostuu tarkalleen uloimpien aaltosulkujen välisistä merkeistä, ilman aaltosulkuja.
6) Komentojen korvaus. Jos sana sisältää avoimen hakasulun ([), suorittaa Tcl komennon arvoinnin. Tehdäkseen tämän, Tcl käynnistää rekursiivisesti toisen tulkin, joka käsittelee kaikki hakasulkua seuraavat merkit omana Tcl-skriptinä. Skripti voi sisältää määrittelemättömän määrän komentoja ja sen pitää päättyä sulkevaan hakasulkuun (]). Tulkatun skriptin tulos (eli viimeiseksi suoritetun komennon tulos) sijoitetaan hakasulkujen ja niiden välissä olevien merkkien paikalle. Yksittäisessä sanassa voi olla määrittelemätön määrä komentojen korvauksia. Komentojen korvausta ei tehdä hakasulkeissa oleville sanoille.
7) Muuttujien korvaus. Jos sana sisältää dollarimerkin ($), suorittaa Tcl muuttujan korvauksen. Dollarimerkki ja kaikki sitä seuraavat sanan merkit korvataan muuttujan sisällöllä. Muuttujan korvaus voi esiintyä seuraavissa muodoissa:
Yksittäisessä sanassa voi olla määrittelemätön määrä muuttujien korvauksia. Muuttujien korvauksia ei tehdä hakasuluissa oleville sanoille.
8) Kenoviivan korvaus. Jos kenoviiva (\) esiintyy sanassa, suoritetaan kenoviivan korvaus. Kaikissa tapauksissa, poislukien alla luetellut erikoistapaukset, kenoviiva poistetaan sanasta ja seuraavaa merkkiä käistellään normaalina merkkinä ja se sisällytetään sanaan. Tämä mahdollistaa lainausmerkkien, sulkevien hakasulkujen ja dollarimerkkien sisällyttämisen sanoihin ilman, että ne laukaisivat erikoiskäsittelyä. Alla oleva taulukko listaa ne kenoviivasarjat [keksi parempi suomennos] ja niiden tuottamat korvaavat sarjat, jotka käsitellään edellä kuvatusta poikkeavalla tavalla.
Kenoviivan korvausta ei tehdä aaltosulkeissa oleville sanoille, poikkeuksena kenoviiva-rivinvaihto yllä kuvatulla tavalla.
9) Kommentit. Jos risuaitamerkki (#) esiintyy paikassa, jossa Tcl-tulkki odottaa löytävänsä ensimmäisen komennon ensimmäisen sanan ensimmäisen merkin, tulkitaan risuaita ja kaikki sitä seuraavat merkit rivinvaihtomerkkiin asti kommentiksi ja ne jätetään huomiotta. Kommenttimerkillä on merkitystä vain, jos se esiintyy komennon alussa.
10) Korvausjärjestys. Tcl-tulkki käsittelee jokaisen merkin tasan kerran muodostaessaan komentosanoja. Esimerkiksi jos osutaan muuttujan korvauksen kohdalle, ei muita korvauksia muuttujan arvolle tehdä, vaan arvo sijoitetaan korvauskohtaan kirjaimellisesti. Jos osutaan komennon korvaukseen, käsitellään kaikki sisältyvät komennot rekursiivisilla Tcl-tulkin kutsuilla eikä korvauksia tehdä ennen kuin rekursiiviset kutsut ja muut korvaukset on suoritettu sisäkkäisessä skriptissä ja paluuarvo on saatu.
Korvaukset sijoitetaan vasemmalta oikealle ja jokainen korvaus arvioidaan kokonaan ennen seuraavan korvauksen arviointia. Näin rivi
set y [set x 0][incr x][incr x]
sijoittaa aina muuttujaan y arvon 012.
11) Korvaus ja sanojen rajat. Korvaukset eivät vaikuta komentosanojen rajoihin. Esimerkiksi muuttujan korvauksen aikana koko muuttujan arvo käsitellään osana yksittäistä sanaa, vaikka muuttujan arvo sisältäisikin välilyöntejä.