tuto = esprimo "." .
esprimo = termo {("+" | "-") termo}.
termo = faktoro {"*" faktoro}.
faktoro = nomo | "(" esprimo ")".
nomo = litero.
PROGRAMO postmetu(enigo,eligo);
{ traduku la "tuto"n de "esprimo" el modela lingvo
al postmeta operaciskribo }
MARKO 13; {erarmarko: antaŭtempa dosierfino}
VAR s: signa; {la kuranta signo ankoraŭ ne fintraktita}
PROCEDURO simbolon; {legu en s-on la sekvan signifan simbolon}
STARTO
RIPETU
SE doFin(enigo) TIAM AL 13;
legu(s)
ĜIS s<>' ' {preterigu brusignojn: spacetojn, linifinojn}
FINO; (*de simbolon*)
PROCEDURO esprimo; {esprimo havas eningigitajn procedurojn}
VAR op: signa; {postmetenda operacisigno}
PROCEDURO termo; {termo = faktoro*faktoro...}
PROCEDURO faktoro; STARTO {faktoro ne havas lokaĵojn}
SE s='(' TIAM STARTO simbolon; esprimo FINO
ALIE skribu(s);
simbolon; {rezignu la fintraktitan s-on, legu freŝan}
FINO; {de faktoro}
STARTO {--- la korpo de termo}
faktoro;
DUM s='*' FARU STARTO simbolon; faktoro; skribu('*') FINO
FINO; {--- finiĝis termo}
STARTO {--- la korpo de esprimo}
termo;
DUM (s='+') AŬ (s='-') FARU STARTO
op:=s; simbolon; termo; skribu(op);
FINO
FINO; {--- finiĝis esprimo}
STARTO
simbolon; esprimo; skribuLin; {--- kontrolendus: s='.'}
13:FINO.
![[Indekso]](bildoj/indekso.gif)
![[Instrukcio]](bildoj/kovrilo.gif)