146
10. Metody ciągowe
list - lista tworzona w czasie rozpoznawania, w której pamiętane są kolejne numery produkcji podane przez funkcję przejścia,
stack - stos,
init8tack - procedura umieszcza na stosie stack symbole Zq i S,
takein(in) - procedura podstawia pod zmienną in wartość pierwszego znaku z bufora wejściowego,
taketop(top) - procedura usuwa ze stosu stack i podstawia pod zmienną top element znajdujący się na szczycie stosu,
removein - procedura usuwa pierwszy znak z bufora wejściowego,
transproc(fop, in, upstack, out) - realizacja funkcji przejścia, tzn. procedura na bazie parametrów wejściowych top i in podstawia pod parametry wyjściowe: upstack - prawą stronę produkcji (do umieszczenia jej na stosie), out - numer tej produkcji (znakowo); jeśli top — 'Z'0 i in = 'S' to out := 'a'; w przypadku błędu pod out podstawiany jest znak 'e\
push(upstack) - procedura umieszcza elementy napisu upstack na stosie stack,
remember(out) - procedura dołącza do listy list element out,
removelist - procedura odłącza od listy list ostatni element,
decide(/is<, tab) - funkcja przeszukuje pierwszą kolumnę tablicy tab i po znalezieniu napisu równego napisowi zapamiętanemu w liście list, daje nazwę obrazu.
procedurę ShawRec(var rec); begin
initstack;
repeat
takein(in);
taketop(top);
if top = in then removein else begin
transproc(top,in,upstack,out); push(upstack); remember(out); end;