BUK 2002 - Zadanie domowe, sprawdzanie komentarzy
Zadanie
Napisz program który:- wczyta ze standardowego wejścia (stdin) kod źródłowy poprawnego programu w pascalu (jedne nieprawidłowości mogą dotyczyć komentarzy)
- sprawdzi czy komentarze sa prawidlowo zagnieżdżone,
- wypisze na standardowe wyjscie stosowny komunikat o prawidlowosci komentarzy
Dobre komentarze opisane są następująca gramatyką:
k -> k1 | k2 k1 -> { t k } k2 -> (* k *) t -> napisy nie zawierające "{" "}" "(*" "*)"
Należy pamiętać o napisach!, np. następujący program jest w pełni poprawny.
var s:string; begin { ala ma kota } s:='{}}(*}'; end.
Napisy są zdefiniowane następującym wyrażeniem:
napis -> "'" ([^"'"] | "'""'")+ "'"
czyli np. poprawne sa następujące polecenia:
Writeln('aaa''xyz'); Writeln(''''); Writeln('xyz''');
Wejście
Kod źródłowy programu należy wczytać ze standardowego wejścia (stdin), wszystkie programy będą poprawne składniowo (z dokładnością do poprawności zagnieżdżenia komentarzy).
Wyjście
Program powinien zapisać na standardowe wyjście:
- OK jeśli program zawiera prawidłowo zagnieżdżone komentarze,
- BLAD wpp
Przykład
Dla danych:
begin { (* x ** *) {} } end.
prawidłową odpowiedzią jest
OK
Dla danych:
begin { (* x '}' ** *) {} } end.
prawidłową odpowiedzią jest
BLAD
Ocenianie
- wymagane jest nadesłanie źródła i kompilatu na adres: walen@mimuw.edu.pl do dnia 18.03.2002.
- języki programowania: C/C++/Pascal/Java
- nie można używać narzędzi lexo-podobnych czy funkcji do analizy wyrażeń regularnych.
- liczba punktów: 5.