Zadanie zaliczeniowe nr 5 (2. trymestr), 8 I 2003

Napisz  program wczytujący z pliku o zadanej w wierszu  komendy
nazwie  poprawny  program w Pascalu i  wypisujący  do  pliku  o
nazwie podanej jako drugi parametr w wierszu komendy tekst tego
programu z usuniętymi komentarzami.

Zdefiniuj dwie stałe:
    const
         KW = chr(13); {Koniec wiersza}
         KP = chr(12); {Koniec pliku}
oraz dwie operacje:
    function CzytZn(var p:text): char;
         {Wczytuje  z  zadanego pliku kolejny  znak.  W  stanie
końca wiersza}
         {daje  KW i przechodzi do następnego wiersza. W stanie
    końca pliku}
         {daje KP (i nic więcej nie robi).}
    procedure PiszZn(var p: text; z:char);
         {Wypisuje  do pliku p znak z. Jeśli z=KW  to  nic  nie
wypisuje,}
         {tylko wykonuje operację writeln(p). Jeśli z=KP, to  w
    ogóle nic nie robi.}
Zdefiniuj     też     funkcję    CzyJest(Nazwa:String):Boolean;
sprawdzającą, czy istnieje plik o podanej nazwie.

Uwagi:
  ·   przez usunięcie komentarzy rozumiemy ich „wygumkowanie”,
     tj zastąpienie ich treści (wraz z nawiasami) spacjami,
·   przejścia do nowego wiersza w obrębie komentarzy mają być
zachowane,
·   program ma uwzględniać oba rodzaje komentarzy ({} i (*
*)),
·   komentarz zaczynający się { musi się kończyć }, a nie *),
·   komentarz zaczynający się (* musi się kończyć *), a nie },
  ·   komentarzy jednego rodzaju nie można w sobie zagnieżdżać,
     natomiast można zagnieździć komentarz jednego rodzaju w
     komentarzu drugiego rodzaju, ale tylko na jeden poziom, tzn.
     zapis
          {(* { *) { {}
     oznacza jeden komentarz zawierający tekst: (* { *) { {, zaś
     zapis
          {(*{}*)}
     oznacza komentarz o treści (*{, po którym występuje tekst *)}
     (nie jest to więc poprawny fragment programu w Pascalu),
  ·   ignorujemy wszelkie dyrektywy kompilatora w programie
     wejściowym,
·   wewnątrz stałych tekstowych oczywiście nie ma komentarzy,
tzn. zapis ‘{ ‘ nie otwiera komentarza,
·   oczywiście należy wykorzystać definicję automatu z ćwiczeń
z TP.
  
Przykładowe wywołanie programu:
   c:\usun_kom dane.pas wynik.txt

Należy  sprawdzić  czy istnieje plik z danymi  (jeśli  nie,  to
kończymy  działanie po wypisaniu stosownego komunikatu)  i  czy
nie  istnieje  plik wyjściowy (jeśli istnieje, to  kończymy  po
wypisaniu  stosownego komunikatu). Należy  też  sprawdzić,  czy
liczba  parametrów  wynosi  2 (jeśli nie,  zakończyć  działanie
wypisując stosowny komunikat).

Powodzenia!