TO Frodooo : skusim vysvetlit 4 . tak laicky, ako to bolo vysvetlene mne :-)
napriklad
4a. Nech gramatika prikazu while je definovana pravidlom (zatvorky v uvodzovkach su terminalne symboly):
While_Stat -> while "(" Expr ")" "{" Stat_Seq "}"
Za predpokladu, vyznam tohto prikazu je rovnaky ako v jazyku C, definujete pren schemu prekladu do postfixneho jazyka, pricom pouzite virtualne instrukcie jump a falsejump
T [[ while "(" Expr ")" "{" Stat_Seq "}" ]]
=
RIESENIE : label<L1> E[[Expr]] falsejump<L2> S[[Stat_Seq]] jump<L1> label<L2>
navestie = label<L1> // navestie pred zaciatkom podmienky cyklu while
podmienka = E[[Expr]] // podmienka
kontrola podmienky = falsejump<L2> // ak je true pokracuje dalej, ak false skace na navestie L2 - prec z cyklu
vykonava sa = S[[Stat_Seq]] // to co sa ma vykonat
skok na navestie L1 = jump<L1> // navrat na cyklus
navestie = label<L2> // navestie pre opustenie cyklu
myslim ze jasnejsie to uz sa ani neda