Riconoscimento di alberi
Un file contiene la rappresentazione parentetica di un insieme di
alberi. I nodi dell'albero sono numeri interi (es. 123, 1, ecc),
oppure sono caratteri fra apici (es. 'a', '1', ecc).
Gli alberi sono separati fra loro dal punto e virgola. Gli spazi
e i ritorni a capo sono irrilevanti.
Scrivere un analizzatore lessicale e sintattico per riconosccere
gli alberi sintatticamente corretti.
Esempio
File di input:
( 'a' () () );
(
)
;
( 121 ( 'b' () () ) () )
;
('b' ('b' () () )
('a' () () )
);
( 'b' ( () () );
( b () () );
())
;
();
File di output:
( 'a' () () );
(
)
;
( 121 ( 'b' () () ) () )
;
('b' ('b' () () )
('a' () () )
);
( 'b' ( (Error: parse error) () )Error: parse error;Error: parse error
( b () () )Error: parse error;Error: parse error
())Error: parse error
;Error: parse error
();Error: parse error
Nota: Non è necessario che gli errori compaiano esattamente
nello stesso modo del file di output di esempio. La cosa importante è
che tutte le linee errate vengano segnalate.