4. naloga

Strukturirani podatki

Na vhodni datoteki imamo strukturirano besedilo v obliki, ki je podobna html ali xml, a s preprostejšim zapisom. Lahko si ga predstavljamo kot knjigo, ki vsebuje poglavja, ta vsebujejo podpoglavja, ta odstavke in tako naprej.

Vsaka vrstica vhodne datoteke lahko vsebuje začetno značko, končno značko ali pa neko poljubno vrstico besedila.

Začetna značka je sestavljena iz znaka »+«, ki mu sledi neko poljubno ime značke, npr:

+uvod

Končna značka je sestavljena iz znaka »-«, ki mu sledi ime značke, ki se na tem mestu zaključuje, npr:

-uvod

Predpostavimo lahko, da so vhodni podatki pravilni: začetne in končne značke so lahko gnezdene, pri tem se ime končne značke vedno ujema z imenom zadnje začetne značke, zato ga ni treba preverjati.

Vse ostale vrstice lahko vsebujejo poljubno besedilo. Te vrstice se ne morejo začeti z znakoma »+« ali »-«.

Zaradi preglednosti lahko na začetku vsake vrstice stojijo presledki, ki pa jih ignoriramo.

Primer takega besedila na vhodni datoteki:

+ena
  +dve
    alfa
  -dve
  +tri
    beta
    gama
    +stiri
      delta
    -stiri
    epsilon
  -tri
  zeta
  +tri
  -tri
-ena
eta

Napiši program, ki bo bral vhodne podatke v tej obliki in sproti izpisoval vse vrstice besedila, ki niso značke; pri tem pa naj pred vsako tako vrstico izpiše vse trenutno aktivne značke (v takem vrstnem redu, kot so gnezdene druga v drugi), med seboj ločene s pikami. Tvoj program lahko bere s standardnega vhoda ali pa iz datoteke vhod.txt (kar ti je lažje). Bere naj vse do konca (EOF). Predpostavi, da je posamezna vrstica dolga največ 100 znakov in da značke niso gnezdene več kot 100 nivojev globoko. Imena značk so sestavljena le iz črk angleške abecede.

Takle naj bo rezultat obdelave zgornjega primera:

ena.dve alfa
ena.tri beta
ena.tri gama
ena.tri.stiri delta
ena.tri epsilon
ena zeta
 eta

PDF besedilo.