En la maŝinaj prezentoj de programlingvoj ŝlosilvortigo estas maniero apartigi la prezentaĵojn de ŝlosilvortoj disde la nomspaco de la programaj nomoj. Ŝlosilvortigo liberigas la programiston el la neceso memori, kiuj nomoj estas rezervitaj, kaj simpligas la sintaksan analizon.
En asembla lingvo kun fiksita tekstaranĝo la apartigo de komandonomoj realiĝas per ilia speciala pozicio en la linio de programa teksto. Simile estis en la klasika Fortrano (ekz‑e en Fortran IV):
1 DO2I = 1, 9
2 A(I) = I
3 DO 4 J = 1, 9
4 A(J) = A(J) + 3
9 DO2I = 9
Ĉi tie en la ordono 1
la signovico DO2I
konsistas el la ŝlosilvorto DO
, la marko 2
, kaj nomo de la variablo I
. La ordono 1
estas do analogia al la ordono 3
, kies strukturo pli klaras pro la spacetoj.
Male, la ordono 9
estas valorizo en kiu DO2I
estas nomo de valorizota variablo (la ordonojn 1
kaj 9
diferencigas la komo post la unua esprimo, kiu en la ĉapo de nombrila iteracio 1
indikas la supran limon de nombrilaj valoroj).
Iom simile estas en Lispo, kvankam (ekz‑e) la ŝlosilvortojn por la konstantoj nil
kaj t
oni ne rajtas redifini.
Algolo havas liberan tekstoaranĝon, kaj dekomence havis tradicion apartigi la ŝlosilvortojn.
Unu el la celoj de Algolo estas publikigado de algoritmoj, kaj tial en la surpapera porpublikiga prezento oni apartigas la ŝlosilvortojn per graseta tiparfasono (en bona tipografio) aŭ per substrekado (en tajpaĵoj kaj manskribo)[1]. En la jaroj 1960-aj tia tradicio ne ekzistis en la lerniloj kaj publikaĵoj de programoj Fortranaj; nun tamen ĝi estas ĝenerale akceptita.
La tiparfasona apartigo ne estis ebla en maŝina prezento per trukartoj, la komuna eniga rimedo en la jaroj 1960-aj. Ankaŭ la signokodoj ne estis internacie normigitaj (la unua versio de Askio aperis en 1962, kaj ne tuj ĝi akiris internacian akcepton). Tial diversaj realigoj de Algolo uzis malsamajn manierojn apartigi ŝlosilvortojn. En la Okcidento oni plej ofte la ŝlosilvortojn encitiligis:
estis enigata kiel
'INTEGER' I, J, INTEGER, DO;
Alia solvo estis uzata en kelkaj tradukiloj verkitaj en Sovetio.[2] Tie la ŝlosilvortojn apartigis antaŭmetita substreka signo vortokomence, kaj ajna disigilo aŭ spaceto vortofine (en Algolo spaceto povis aperi en ajna loko sen ŝanĝi la signifon de la programo — sed en ĉi tiu ŝlosilvortigo spacetoj estis malpermesitaj ene de la prezentoj de ŝlosilvortoj). Ĉi tiu solvo havis plurajn avantaĝojn:
_INT
, _PROC
tute sufiĉis por rekoni la longajn ŝlosilvortojn integer kaj procedure. Nun tiajn kompletigojn povas fari dialoga redaktilo, sed en la jaroj 1960 oni devis ĉion tajpi sur trukartojn.La lasta punkto eble bezonas klarigon. Algolo 60 estis internacia projekto, kaj ĝi antaŭvidis ekziston de naciaj variantoj. Ekz‑e ekzistis naciaj variantoj franca kaj rusa. Nu, en tiuj lingvoj la adjektivoj respondaj al la deklarilo interger havas variantojn unu- kaj plurnombrajn (kiel la esperantaj entjera kaj entjeraj) kaj genrajn (kiel la francaj entier, entière, entiers, entières). La tradukiloj francaj perfortis la francan lingvon, lasante nur la formon 'ENTIER'[3]; en la versio rusa eblis uzi ĉiujn formojn fleksiajn (цел{ый,ая,ое,ые}), aŭ la mallongigon _ЦЕЛ
. La referencajn ŝlosilvortojn eblis rekonstrui per simpla skripto, kiel ĉi tiu:
$ echo "_ЦЕЛЫЕ I, J; _ЦЕЛЫЙ_МАССИВ A[0:9];" |\ sed -e "s/_ЦЕЛ[[:alpha:]]*/'INTEGER'/g; s/_МАС[[:alpha:]]*/'ARRAY'/g" 'INTEGER' I, J; 'INTEGER''ARRAY' A[0:9]; $
Anglalingve simila problemo tamen aperas por iuj ŝlosilvortoj substantivaj. Ekz‑e en Paskalo,
type sekso = (vira, ina); trukarto = packed array [1..80] of char;
la ununombra ŝlosilvorto type enkondukas du tipojn.
La aŭtoroj de la modernaj programlingvoj kaj tradukiloj plejparte ne zorgas pri inĝenia apartigo de la ŝlosilvortoj; oni simple malpermesas ke programe difinita objekto havu nomon kies teksto identas kun ŝlosilvorto. Ekz‑e en C provo nomi variablon per short igas la tradukilon raporti eraron:
% cat t.c main( ) { int short1 = 1; int short = 2; } % gcc t.c t.c: In function ‘main’: t.c:3:15: error: expected identifier or ‘(’ before ‘=’ token int short = 2; ^ %
Tamen en la publikaĵoj de programoj oni ja uzas la apartigon de la ŝlosilvortoj enkondukitan de la porpublikiga versio de Algolo:
switch(x)
{
case 0:
case 1:
printf("unu"); break;
case 2:
printf("du"); break;
default:
printf("io alia");
}
Kaj oni ja uzas la eskapilon # por la direktivoj (ekz-e #include
ktp).