Chybicka se vloudila

Martin Kucera drdech at mbox.vol.cz
Wed Sep 23 12:08:14 CEST 1998


> > Budte zdravi,
> >
> > uz znate tohle:
> >
> > \def\x{\number\x}\x
>
> Ne, to jeste nezname.
>
> Domnivam se, ze je potreba Vam pogratulovat k objeveni chyby v TeXu.
> Jeste jsem to podrobne nezkoumal v tex.web (TeX --  the program), ale
> s vysokou pravdepodobnosti to vypada na neosetreni mozne nekonecne
rekurze
> typu: \expandprimitiv(\expandprimitiv(\expandprimitiv...)). To by
> jednoznacne znamenalo opomenuti programatora TeXu. Napriklad stejnym
> zpusobem havaruje \def\x{\the\x}\x

Cloveka okamzite napadne zkusit

\def\x{\number\y}
\def\y{\number\x}
\x

Havarovalo mi to uplne stejnym zpusobem jako priklad pana Snajdra.
Z toho tedy plyne, ze neni osetrena mozna cyklicka zavislost maker, nejsem
si
ale jist (nejsem odbornikem na tex.web, takze ma uvaha vychazi z mych
zkusenosti
programatora v Pascalu), zda je vubec mozne ji nejak rozumne osetrit.
Koneckoncu v Pascalu muzu taky naprogramovat nekonecnou smycku
a kompilator mi nerekne, kde je chyba, ohlasi jen "Stack overflow error."
Takze je docela dobre mozne, ze by osetreni teto chyby bylo prilis
pametove narocne (udrzovat prehled o vsech makrech a vzajemne
zavislosti mezi nimi), a tak se Knuth rozhodl, ze to necha byt.

Koneckoncu kdyz zkusime

\def\x{ <nejake prikazy>
\x}

tak se zacyklime jeste hur - mne tedy proces naprosto vytuhl
(kdybych si dal \tracingmacros=1, skonci vypis do logu preplnenim disku).

Cili mozna Knuth postupoval stylem "kdyz si nekdo neohlida nekonecnou
smycku, patri mu to";

			Zdravi

Martin Kucera, sefredaktor Dechu draka

tel. 069 / 611 29 92
e-mail drdech at altar.cz







More information about the csTeX mailing list