Version 10 of De elva reglerna

Updated 2003-05-22 12:53:22

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) <Evaluation.>

Ett kommando <is evaluated> 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 variabler 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)
\<radbyte>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.

to be continued...


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 <s� h�r>. "Substituering" trivs jag ocks� d�ligt med, men �nnu s�mre med "ers�ttning", tror jag.


Category Documentation |