This is a Work-in-progress translation of the eleven syntactic rules of Tcl. (see [Endekalogue] for other translations). Eventuellt kontroversiella �vers�ttningar: anf�rda tecken: quoted characters strukturvariabel: array BESKRIVNING F�ljande regler definierar syntax och semantik f�r programmeringsspr�ket Tcl: (1) Kommandon Ett Tcl-skript �r en (unicode-)str�ng som inneh�ller ett eller flera kommandon. Semikolon och nyradstecken �r kommandoavskiljare s�vida de inte �r anf�rda enligt beskrivning nedan. H�gerhakparenteser avslutar kommandon under kommandosubstituering (se nedan) s�vida de inte �r anf�rda. (2) Ett kommando i tv� steg. F�rst delar Tcl-tolken upp kommandot i ord och utf�r substituering s� som beskrivs nedan. Dessa substitueringar utf�rs p� samma s�tt f�r alla kommandon. Det f�rsta ordet anv�nds f�r att finna en kommandoprocedur som ska utf�ra kommandot, de �vriga orden l�mnas till kommandoproceduren. Kommandoproceduren har frihet att tolka vart och ett av orden p� vilket s�tt den �nskar, t ex som ett heltal, variabelnamn, lista eller Tcl-skript. Olika kommandon tolkar sina ord p� olika s�tt. (3) Ord Orden i ett kommando avskiljs fr�n varandra av vita tecken (med undantag f�r nyradstecken, som �r kommandoavskiljare. (4) Dubbelcitattecken Om det f�rsta tecknet i ett ord �r ett dubbelcitattecken ('''"''') s� avslutas ordet av n�sta dubbelcitattecken. Om semikolon, h�gerhakparenteser eller vita tecken (inklusive nyradstecken) f�rekommer mellan citattecknen behandlas de som vanliga tecken och r�knas in i ordet. Komandosubstituering, variabelsubstituering och backstreckssubstituering utf�rs p� tecknen mellan citattecknen s� som beskrivs nedan. Dubbelcitattecknen ing�r inte i sj�lva ordet. (5) Klamrar Om det f�rsta tecknet i ett ord �r en v�nsterklammer ('''{''') s� avslutas ordet av n�sta motsvarande h�gerklammer ('''}'''). Klamrar kan n�stlas inom ett ord: f�r varje ytterligare v�nsterklammer m�ste det finnas ytterligare en h�gerklammer (men om en v�nster- eller h�gerklammer inom ordet �r anf�rd med ett backstreck r�knas den inte i klammerpassningen). Inga substitueringar utf�rs p� tecknen mellan klamrarna med undantag f�r backstreck-nyradstecken-substitueringar som beskrivs nedan. Inte heller kommer semikolon, nyradstecken, h�gerhakparenteser eller vita tecken att tolkas som speciella tecken. Ordet kommer att best� av exakt de tecken som st�r mellan de yttersta klamrarna; de yttre klamrarna ing�r inte i ordet. (6) Kommandosubstituering Om ett ord inneh�ller en v�nsterhakparentes ('''[[''') s� genomf�r Tcl kommandosubstituering. F�r detta �ndam�l startar den Tcl-tolken rekursivt f�r att bearbeta tecknen som f�ljer efter v�nsterhakparentesen som ett Tcl-skript. Skriptet f�r inneh�lla ett godtyckligt antal kommandon och m�ste avslutas med en h�gerhakparentes (''']]'''). Skriptets resultat (dvs resultatet av dess sista kommando) s�tts in i ordet som ers�ttning f�r hakparenteserna och alla tecken mellan dem. Ett godtyckligt antal kommandosubstitueringar f�r f�rekomma i ett enskilt ord. Kommandosubstituering utf�rs inte p� ord som omsluts av klamrar. (7) Variabelsubstituering Om ett ord inneh�ller ett dollartecken ('''$''') s� genomf�r Tcl variabelsubstituering: dollartecknet och de f�ljande tecknen ers�tts i ordet av variabelns v�rde. Variabelsubstituering f�rekommer i f�ljande former: $namn: ''namn'' �r namnet p� en skal�rvariabel; namnet �r en sekvens av ett eller flera tecken som �r en bokstav, siffra, understreck eller namnrymdavskiljare (tv� eller flera kolon). $namn(index): ''namn'' �r namnet p� en strukturvariabel och ''index'' �r namnet p� ett element i denna. ''Namn'' f�r bara best� av bokst�ver, siffror, understreck och namnrymdavskiljare, och f�r vara en tom str�ng. Kommandosubstituering, variabelsubstituering och backstreckssubstituering kommer att utf�ras p� tecknen i ''index''. ${namn}: ''namn'' �r namnet p� en skal�rvariabel. Det f�r inneh�lla vilka tecken som helst f�rutom h�gerklammertecken. ''F�r oss som anv�nder variabelnamn med tecken som �, �, � �r det h�r ett n�dv�ndigt skrivs�tt.'' Ett godtyckligt antal variabelsubstitueringar kan f�rekomma i ett enskilt ord. Variabelsubstituering utf�rs inte p� ord som omsluts av klamrar. (8) Backstreckssubstituering Om ett backstreck ('''\''') f�rekommer i ett ord s� utf�rs backstreckssubstituering. I alla f�rekomster utom de som beskrivs nedan utel�mnas backstrecket och det f�ljande tecknet hanteras som ett vanligt tecken och f�r ing� i ordet. Detta till�ter att tecken som dubbelcitattecken, h�gerklamrar och dollartecken ing�r i ord utan att orsaka s�rskild bearbetning. F�ljande tabell visar de backstreckssekvenser som hanteras annorlunda, tillsammans med de v�rden som ers�tter varje sekvens. \a: Ljudsignal (0x7) \b: Backsteg (0x8) \f: Sidmatning (0xc) \n: Nyradstecken (0xa) \r: Vagnretur (0xd) \t: Tabulatortecken (0x9) \v: Vertikal tabulering (0xb) \vittTecken: Ett mellanslagstecken ers�tter backstrecket, radbrytningen och alla mellanslag och tabuleringar efter radbrytningen. Den h�r backstreckssekvensen �r speciell s�tillvida att den ers�tts i ett s�rskilt f�rbearbetningsskede innan kommandot bearbetas p� allvar. Det betyder att den kommer att ers�ttas �ven om den f�rekommer inom klamrar, och att det resulterande mellanslaget kommer att hanteras som en ordavskiljare om det inte st�r inom klamrar eller �r anf�rt. \\: Backstreck ('''\''') \ooo: Siffrorna ''ooo'' (en, tv� eller tre stycken) ger ett �ttabitars oktalt v�rde f�r det Unicode-tecken som s�tts in. De �vre bitarna i teckenkoden kommer att vara 0. \xhh: Hexadecimalsiffrorna ''hh'' ger ett �ttabitars hexadecimalt v�rde f�r det Unicode-tecken som s�tts in. Ett godtyckligt antal hexadecimala siffror kan f�rekomma; alla utom de tv� sista kommer dock att ignoreras (resultatet blir alltid av en bytes storlek). De �vre bitarna av Unicode-teckenkoden blir 0. \uhhhh: Hexadecimalsiffrorna ''hhh'' (en, tv� eller tre stycken) ger ett sextonbitars hexadecimalt v�rde f�r det Unicode-tecken som s�tts in. Backstreckssubstitution utf�rs inte p� ord som omsluts av klamrar, med undantag f�r backstreck-radbrytning, s� som beskrivs ovan. (9) Kommentarer Om ett br�dg�rdstecken ('''#''') st�r p� en plats d�r Tcl f�rv�ntar sig det f�rsta tecknet av det f�rsta ordet i ett kommando, s� kommer br�dg�rdstecknet och de tecken som f�ljer det, till och med n�sta nyradstecken, att hanteras som en kommentar och ignoreras. Kommentarstecknet har den h�r betydelsen enbart n�r den st�r i b�rjan av ett kommando. (10) Substitueringsordning Varje tecken behandlas exakt en g�ng av Tcl-tolken under proceduren d� orden i ett kommando fastst�lls. Till exempel g�ller att om variabelsubstituering intr�ffar kommer inga ytterligare substitueringar att g�ras p� variabelns v�rde; detta v�rde s�tts in i ordet som det �r. Om kommandosubstituering intr�ffar s� bearbetas det n�stlade kommandot helt och h�llet av det rekursiva anropet till Tcl-tolken; inga substitueringar utf�rs innan det rekursiva anropet g�rs, och inga ytterligare substitueringar utf�rs p� resultatet av det n�stlade skriptet. Substitueringar utf�rs fr�n v�nster till h�ger, och varje substituering helt och h�llet innan tolken b�rjar n�sta. D�rf�r kommer en sekvens som set y [set x 0][incr x][incr x] alltid att s�tta variabeln ''y'' till v�rdet ''012''. (11) Substituering och ordgr�nser Substitueringar p�verkar inte ordgr�nserna i ett kommando. Vid t ex variabelsubstituering kommer hela v�rdet av variabeln att bli en del av ett enda ord, �ven om v�rdet inneh�ller mellanslag. ---- ''Vem �r det som jobbar p� detta? Hj�lper g�rna till! - [VL] 21 maj 2003.'' [Peter Lewerin] jobbar p� detta. Svensktalande personer �r v�lkomna att l�mna f�rslag, antingen h�r p� sidan eller per e-post. Notera att alla �ndringar ovanf�r horisontalstrecket ovan riskerar att f�rsvinna om jag uppdaterar texten utan att m�rka att n�gon annan gjort en �ndring. ''Skall ta en titt n�r jag har lite tid �ver, vore trevligt att f� ihop de elva - [VL]'' Speciellt �nskar jag att du kunde titta p� de ord som jag inte hittat n�gon bra �vers�ttning f�r. Jag har markerat dem . "Substituering" trivs jag ocks� d�ligt med, men �nnu s�mre med "ers�ttning", tror jag. ---- 2003-05-22: R��vers�ttningen �r klar, nu �terst�r finputsning och �vers�ttning av de sista o�versatta fraserna. ---- [Category Documentation] |