### Ekzemplo pri rekursia desupriĝo

#### Gramatiko de modela lingvo

       tuto = esprimo "." .
       esprimo = termo {("+" | "-") termo}.
       termo = faktoro {"*" faktoro}.
       faktoro = nomo | "(" esprimo ")".
       nomo = litero.

#### La programo en Paskalo

    PROGRAMO postmetu(enigo,eligo);
       { traduku la "tuto"n de "esprimo" el la 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.