Suche Home Einstellungen Anmelden Hilfe  

{!!! Die benoetigten UNITS sind an den Programmtext angehaengt !!! }
program parser;   { Beispiel: 2,3,5-trimethylhexane }
 uses Daten, Message, WinCrt;

 procedure POS; forward;
 procedure Prefix; forward;
 procedure SUAC; forward;
 procedure SUAC_Radical; forward;
 procedure Substituent;  forward;

 procedure Eingabe;
 begin
   StandardMessage(0);
   For i := 0 to 255 do Formel[i] := '$';    { Array mit "Dummy" füllen }
   For i := 0 to 255 do                      { Einlesen der Formel }
     begin
       Formel[i]:= readkey;
       write(Formel[i]);
       if Formel[i] = '$' then exit;
     end;
   StandardMessage(1);
   BNT_Sicherung := 0;
   BNT_Kontrolle := 0;
   NOT_MainChain := false;
 end;

 procedure Ausgabe;
 begin
   StandardMessage(2);
   For i := 0 to 255 do                      { Einlesen der Formel }
       begin
         if Formel[i] = '$' then
            begin
              i := 255;
              write(' ');
            end
            else write(Formel[i]);
       end;
   StandardMessage(3);
   halt;
end;

 procedure MainChain;
 var j      : byte;
 begin
   StandardMessage(4);
   NOT_MainChain := true;       { vorbereitet für 2x SUAC }
   INC(ScanKopf);               { SUAC in SUAC_Radical &  }
   j := 1;                      { SUAC in MainChain       }
   SUAC_Wort_Kontrolle := '   ';
   For ScanKopf := ScanKopf to ScanKopf + 2 do                  { hier scannen der 3er-Token }
     begin
       Insert(Formel[ScanKopf], SUAC_Wort_Kontrolle, j);
       INC(j);
     end;
   if (SUAC_Wort_Kontrolle = 'eth ') or
      (SUAC_Wort_Kontrolle = 'but ') or
      (SUAC_Wort_Kontrolle = 'hex ') then
      begin
       { if NOT_MainChain = false then }
        begin
          if (SUAC_Wort_Kontrolle = 'eth ') then Anzahl := 2;
          if (SUAC_Wort_Kontrolle = 'but ') then Anzahl := 4;
          if (SUAC_Wort_Kontrolle = 'hex ') then Anzahl := 6;
          StandardMessage(5);
          INC(ScanKopf);
          if Formel[ScanKopf] <> ('a') then
             begin
               Fehler(7);
               exit;
             end
             else
             begin
               INC(ScanKopf);
               if Formel[ScanKopf] <> ('n') then
                  begin
                    Fehler(7);
                    exit;
                  end
                  else
                  begin
                    INC(ScanKopf);
                    if Formel[ScanKopf] <> ('e') then
                       begin
                         Fehler(7);
                         exit;
                       end
                       else
                       begin
                         StandardMessage(6);
                         Ausgabe;
                         exit;
                       end;
                  end;
              end;
        end;
      end;
   INC(ScanKopf);                          { hier scannen der 4er-Token }
   Insert(Formel[ScanKopf], SUAC_Wort_Kontrolle, j);
   if (SUAC_Wort_Kontrolle = 'meth') or
      (SUAC_Wort_Kontrolle = 'prop') or
      (SUAC_Wort_Kontrolle = 'pent') then
      begin
        if (SUAC_Wort_Kontrolle = 'meth') then Anzahl := 1;
        if (SUAC_Wort_Kontrolle = 'prop') then Anzahl := 3;
        if (SUAC_Wort_Kontrolle = 'pent') then Anzahl := 5;
        StandardMessage(7);
        INC(ScanKopf);
        if Formel[ScanKopf] <> ('a') then
           begin
             Fehler(7);
             exit;
           end
           else
           begin
             INC(ScanKopf);
             if Formel[ScanKopf] <> ('n') then
                begin
                  Fehler(7);
                  exit;
                end
                else
                begin
                  INC(ScanKopf);
                  if Formel[ScanKopf] <> ('e') then
                     begin
                       Fehler(7);
                       exit;
                     end
                     else
                     begin
                       StandardMessage(8);
                       Ausgabe;
                       exit;
                     end;
               end;
           end;
      end;
   writeln('--- a problem ---');
   halt;
 end;

 procedure Formula;
 begin
   StandardMessage(9);
   ScanKopf := 0;                              { Scankopf auf 1. Element }
   Zeichen  := Formel[Scankopf];
   if (Zeichen IN ['0'..'6']) or
      (Zeichen IN ['m','d','t']) then
      begin
        StandardMessage(10);
        Prefix;
        halt;
      end
      else
      begin
        TokenTest := '     ';
        For ScanKopf := 0 to 3 do Insert(Formel[Scankopf], TokenTest, Scankopf+1);
        if (TokenTest = 'hexa ') or (TokenTest = 'pent ') then
            begin
              if TokenTest = 'pent ' then
                 begin
                   Insert(Formel[Scankopf+1], TokenTest, Scankopf+2);
                   if TokenTest = 'penta' then write(Tokentest);
                 end;
              StandardMessage(11);
              Prefix;
              halt;
            end;
      end;
   {Startsybole für MainChain lt. SUAC: meth, eth, prop & pent, but, hex }
   if Zeichen IN ['m','e','p','b','h'] then
      begin
             StandardMessage(12);
             {MainChain;} halt;                    { noch nicht geöffnet }
      end
      else Fehler(0);
   halt;
 end;

 procedure Number;
 begin
   BNT_Kontrolle := BNT_Sicherung;
   Zeichen := Formel[ScanKopf];
   if Zeichen IN  ['0'..'6'] then
      begin
        INC(ScanKopf);
        INC(BNT_Kontrolle);
        BNT_Sicherung := BNT_Kontrolle;
        StandardMessage(13);
        Zeichen := Formel[ScanKopf];
        if Zeichen IN  ['-',','] then POS else Fehler(2);
      end
      else
      begin
        Fehler(2);
        halt;
      end;
 end;

 procedure POS;
 begin
   { ich komme von Prefix scanne eine Ziffer und gehe weiter zu Number }
   { eindeutig, da nur dann POS aufgerufen wird, wenn Zeichen = Ziffer }
   Zeichen  := Formel[ScanKopf];
   if Zeichen IN ['0'..'6'] then
      begin
        StandardMessage(14);
        Number;
      end
      else     { Fallunterscheidungen bei der Rückkehr aus Number }
      begin    { ich scanne ein "-" und gehe zu Substituent }
        if Zeichen IN ['-'] then  Substituent;
                   { ich scanne ein "," und prüfe was danach folgt }
                   { Fall 1 : "-" --> Fehler }
                   { Fall 2 : Ziffer zw. "0..6" --> Number }
        if Zeichen IN [','] then
           begin
             INC(ScanKopf);
             Zeichen := Formel[ScanKopf];
             if Zeichen IN ['-'] then
                begin
                  Fehler (1);
                  Fehler(11);
                end
                else
                begin
                  if Zeichen IN ['0'..'6'] then Number;
                end;
           end;
      end;
   Fehler(1);
   halt;
 end;

 procedure BNT;
 begin
   case BNT_Kontrolle of
     1 : begin BNT_Wort:= ('mono '); TokenLaengenKorrektur := 3; end;
     2 : begin BNT_Wort:= ('di   '); TokenLaengenKorrektur := 1; end;
     3 : begin BNT_Wort:= ('tri  '); TokenLaengenKorrektur := 2; end;
     4 : begin BNT_Wort:= ('tetra'); TokenLaengenKorrektur := 4; end;
     5 : begin BNT_Wort:= ('penta'); TokenLaengenKorrektur := 4; end;
     6 : begin BNT_Wort:= ('hexa '); TokenLaengenKorrektur := 3; end;
   end;
   INC(ScanKopf);
   i := 1;
   BNT_Wort_Kontrolle := '     ';
   Anfang:= ScanKopf;
   Ende  := ScanKopf + TokenLaengenKorrektur;
   For ScanKopf := Anfang to Ende do
       begin
         Insert(Formel[ScanKopf], BNT_Wort_Kontrolle, i );
         INC(i);
       end;
   if BNT_Wort = BNT_Wort_Kontrolle then
      begin
        StandardMessage(15);
        SUAC_Radical;
      end
      else Fehler(4);
 end;

 procedure SUAC;
 begin
   StandardMessage(16);
   INC(ScanKopf);
   j := 1;
   SUAC_Wort_Kontrolle := '   ';
   For ScanKopf := ScanKopf to ScanKopf + 2 do                  { hier scannen der 3er-Token }
     begin
       Insert(Formel[ScanKopf], SUAC_Wort_Kontrolle, j);
       INC(j);
     end;
   if (SUAC_Wort_Kontrolle = 'eth') or
      (SUAC_Wort_Kontrolle = 'but') or
      (SUAC_Wort_Kontrolle = 'hex') then
      begin
        if (SUAC_Wort_Kontrolle = 'eth') then
           begin
             Anzahl  := 2;
             Struktur:= 'C2H5';
           end;
        if (SUAC_Wort_Kontrolle = 'but') then
           begin
             Anzahl  := 4;
             Struktur:= 'C4H9';
           end;
        if (SUAC_Wort_Kontrolle = 'hex') then
           begin
             Anzahl  := 6;
             Struktur:= 'C6H13';
           end;
        StandardMessage(17);
       { if NOT_MainChain = false then  }  { zukünftig 2 x SUAC }
        begin
          INC(ScanKopf);
          if Formel[ScanKopf] <> ('y') then
             begin
               Fehler(6);
               halt;
             end
             else
             begin
               INC(ScanKopf);
               if Formel[ScanKopf] <> ('l') then
                  begin
                    Fehler(6);
                    halt;
                  end
                  else
                  begin
                    StandardMessage(18);
                    MainChain;
                    exit;
                  end;
              end;
           end;
      end;
   INC(ScanKopf);                          { hier scannen der 4er-Token }
   Insert(Formel[ScanKopf], SUAC_Wort_Kontrolle, j);
   if (SUAC_Wort_Kontrolle = 'meth') or
      (SUAC_Wort_Kontrolle = 'prop') or
      (SUAC_Wort_Kontrolle = 'pent') then
      begin
        if (SUAC_Wort_Kontrolle = 'meth') then
           begin
             Anzahl  := 1;
             Struktur:= 'CH3';
           end;
        if (SUAC_Wort_Kontrolle = 'prop') then
           begin
             Anzahl  := 2;
             Struktur:= 'C3H7';
           end;
        if (SUAC_Wort_Kontrolle = 'pent') then
           begin
             Anzahl  := 5;
             Struktur:= 'C5H11';
           end;
        StandardMessage(19);
       { if NOT_MainChain = false then }
        begin
          INC(ScanKopf);
          if Formel[ScanKopf] <> ('y') then
             begin
               Fehler(6);
               halt;
             end
             else
             begin
               INC(ScanKopf);
               if Formel[ScanKopf] <> ('l') then
                  begin
                    Fehler(6);
                    halt;
                  end
                  else
                  begin
                    StandardMessage(20);
                    MainChain;
                    exit;
                  end;
             end;
        end;
   end;
   Fehler(6);
   halt;
 end;

 procedure SUAC_Radical;
 begin
   StandardMessage(21);
   SUAC;
end;

 procedure Substituent;
 var BNT_Wort_Kontrolle : string[5];
     FehlerCode : integer;
 begin
   readln;
   if BNT_Kontrolle > 0 then BNT else SUAC_Radical;
 end;

 procedure Prefix;
 begin
   StandardMessage(22);
   ScanKopf := 0;                              { Scankopf auf 1. Element }
   Zeichen  := Formel[Scankopf];
   if (Zeichen IN ['0'..'6']) then
      begin
        StandardMessage(23);
        POS;
      end
      else
      begin
        if (Zeichen IN ['m','d','t','p','h']) then
           begin
             StandardMessage(24);
             DEC(ScanKopf);                    { ScanKopf ist nun -1 }
             Substituent;                      { und wird in SUAC wieder }
           end                                 { auf "NULL" gesetzt zum }
           else Fehler(0);                     { des 1. Zeichens }
      end;                                     { Anpassung an POS-Number ..}
 end;

begin
  InitWinCrt;
  ClrScr;
  Eingabe;
  Formula;
  DoneWinCrt;
end.

---------------  Units -------------------
unit Daten;

interface
var Formel                : array[0..255] of char;
    Position_im_Formel    : byte;
    i, j                  : byte;
    ScanKopf              : shortInt;
    TokenLaengenKorrektur : shortInt;
    Anfang, Ende          : integer;
    Zeichen               : char;
    NOT_MainChain         : boolean;
    Struktur              : String[5];
    Tokentest             : string[5];
    BNT_Wort_Kontrolle    : string[5];
    BNT_Wort              : string[5];
    BNT_Sicherung         : shortInt;
    BNT_Kontrolle         : shortInt;  { Anzahl der Nebenketten = BNT-Wert }
    SUAC_Wort_Kontrolle   : string[4]; { string zur TOKEN-Kontrolle }
    Anzahl : byte;                     { Anzahl der C-Atome in der Hauptkette }

implementation

begin
end.
------
unit Message;

interface
  procedure Fehler(FehlerCode:Byte);
  procedure StandardMessage(MsgNumber : Byte);

implementation
uses Daten, WinCrt;

   procedure Fehler(FehlerCode:Byte);
   begin
     writeln;
     if FehlerCode < 10 then writeln('Achtung: syntaktischer Fehler im ');
     case FehlerCode of
       0:  writeln('Modul "Formula" --> falsches Startsymbol');
       1:  writeln('Modul "POS"');
       2:  writeln('Modul "Number"');
       3:  writeln('Modul "Substituent"');
       4:  writeln('Modul "BNT"');
       5:  writeln('Modul "SUAC-Radical"');
       6:  writeln('Untermodul "SUAC" vom Modul SUAC-Radical');
       7:  writeln('Modul "MainChain"');
       8:  writeln('Untermodul "SUAC" vom Modul MainChain');

      11:  writeln('... nach einem Komma muss eine Ziffer folgen');
     end;
     writeln;
     readln;
     halt;
   end;

  procedure StandardMessage(MsgNumber : Byte);
  begin
    case MsgNumber of
      0: begin
           writeln('****************************************');
           writeln('* Ende der Eingabe mit dem Zeichen "$" *');
           writeln('*                                      *');
           writeln('* Beispiel: 2,3,5-trimethylhexane$     *');
           writeln('*                                      *');
           writeln('* Bitte chemische Formel eingeben:     *');
           writeln('****************************************');
           writeln;
           write  (' --> ');
         end;
      1: begin
           writeln;
           writeln('******************************************');
           writeln('* ... ich gehe jetzt ins Modul "Formula" *');
           writeln('*                                        *');
           writeln('* ... weiter mit ENTER                   *');
           writeln('******************************************');
           readln;
         end;
      2: begin
           writeln;
           writeln('********************************************');
           writeln('* ... die eingegebene organische Struktur  *');
           writeln('*                                          *');
           write  ('*     ');
         end;
      3: begin
           writeln('               *');
           writeln('*                                          *');
           writeln('*     entspricht der UICAP-Nomemklatur     *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
      4: begin
           ClrScr;
           writeln('****************************************************************');
           writeln('* Ich bin jetzt im Modul "MainChain" und scanne jetzt die      *');
           writeln('* Informationen über die Anzahl der Kohlenwasserstoffe in der  *');
           writeln('* Hauptkette                                                   *');
           writeln('* ist Token = meth --> dann erhalte ich  1 Kohlenwasserstoff   *');
           writeln('*             eht  --> dann    -"-       2 Kohlenwasserstoffe  *');
           writeln('*             prop --> dann    -"-       3        -"-          *');
           writeln('*             but  --> dann    -"-       4        -"-          *');
           writeln('*             pent --> dann    -"-       5        -"-          *');
           writeln('*             hex  --> dann    -"-       6        -"-          *');
           writeln('*                      ansonsten Abbruch, da falsches Token    *');
           writeln('* ... weiter mit ENTER                                         *');
           writeln('****************************************************************');
           readln;
         end;
      5: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich erkenne das TOKEN ',SUAC_WORT_Kontrolle,'           *');
           writeln('*     im Modul "SUAC" von MAINCHain        *');
           writeln('*     d.h., die Hauptkette besteht aus     *');
           writeln('*     ',Anzahl,' Kohlenstoffatomen                  *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
      6: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich erkenne ein korrektes "ane"-Ende *');
           writeln('*     im SUAC-Modul von "MainChain"        *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
      7: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich erkenne das TOKEN ',SUAC_WORT_Kontrolle,'           *');
           writeln('*     im Modul "SUAC" von MAINCHain        *');
           writeln('*     d.h., die Hauptkette besteht aus     *');
           writeln('*     ',Anzahl,' Kohlenstoffatomen                  *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
      8: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich erkenne ein korrektes "ane"-Ende *');
           writeln('*     im SUAC-Zweig von Modul "MainChain"  *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
      9: begin
           ClrScr;
           writeln('****************************************************************');
           writeln('* Ich bin jetzt im Modul "Formula" und scanne das Startsymbol  *');
           writeln('* der Formel und entscheide damit über den weiteren "Scanweg"  *');
           writeln('* ist StartSymbol = Ziffer    [0..6]      oder                 *');
           writeln('*                   Buchstabe [m,d,t]     oder                 *');
           writeln('*                   Token     [penta, hexa]                    *');
           writeln('*     dann      gehe ich nach Modul  ---> "Prefix"             *');
           writeln('*     ansonsten gehe ich nach Modul  ---> "MainChain", wenn    *');
           writeln('*          das Startsymbol = "korrekter" Buchstabe             *');
           writeln('*                  ansonsten Abbruch, da falsches Startsymbol  *');
           writeln('****************************************************************');
         end;
     10: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich gehe jetzt ins Modul "Prefix"    *');
           writeln('*     da Startsymbol = ',Zeichen,'                   *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
     11: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich gehe jetzt ins Modul "Prefix"    *');
           writeln('*     da Token = ',TokenTest,'                     *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
     12: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich gehe jetzt ins Modul "MainChain" *');
           writeln('*     da Startsymbol = ',Zeichen,'                   *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
     13: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich erkenne eine ',BNT_Kontrolle,'. Nebenkette am    *');
           writeln('*     ',Zeichen,'. Kohlenwassersroffatom             *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
     14: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich gehe jetzt ins Modul "Number"    *');
           writeln('*     da Symbol = ',Zeichen,'                        *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
     15: begin
           ClrScr;
           writeln;
           writeln('************************************************');
           writeln('* ... ich erkenne und bestätige die            *');
           writeln('*     ',BNT_Kontrolle,'. Nebenketten am                        *');
           writeln('*     Kohlenwassersroffatom --> referenziert   *');
           writeln('*     durch das TOKEN --> ',BNT_Wort_Kontrolle,'                *');
           writeln('* ... weiter mit ENTER                         *');
           writeln('************************************************');
           readln;
           writeln;
           writeln('************************************************');
           writeln('* ... ich gehe jetzt ins Modul "SUAC_Radical"  *');
           writeln('*                                              *');
           writeln('* ... weiter mit ENTER                         *');
           writeln('************************************************');
           readln;
         end;
     16: begin
           ClrScr;
           writeln('****************************************************************');
           writeln('* Ich bin jetzt im Modul "SUAC" und scanne jetzt die           *');
           writeln('* Informationen über den Aufbau der Nebenketten                *');
           writeln('* ist Token = meth --> dann erhalte ich als Nebenkette CH3     *');
           writeln('*             eht  --> dann                            C2H5    *');
           writeln('*             prop --> dann                            C3H7    *');
           writeln('*             but  --> dann                            C4H9    *');
           writeln('*             pent --> dann                            C5H11   *');
           writeln('*             hex  --> dann                            C6H13   *');
           writeln('*                      ansonsten Abbruch, da falsches Token    *');
           writeln('* ... weiter mit ENTER                                         *');
           writeln('****************************************************************');
           readln;
         end;
     17: begin
           writeln;
           writeln('************************************************');
           writeln('* ... ich erkenne im Modul SUAC das TOKEN      *');
           writeln('*     ',SUAC_Wort_Kontrolle,'                                      *');
           writeln('*     d.h., die Nebenketten haben jeweils      *');
           writeln('*     ',Anzahl,' Kohlenwasserstoff(e)                   *');
           writeln('*     in Form einer ',Struktur,'-Verbindung             *');
           writeln('* ... weiter mit ENTER                         *');
           writeln('************************************************');
           readln;
         end;
     18: begin
           ClrScr;
           writeln;
           writeln('********************************************');
           writeln('* ... ich erkenne ein korrektes "yl"-Ende  *');
           writeln('*     im SUAC-Radical-Zweig                *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
           writeln;
           writeln('********************************************');
           writeln('* ... ich gehe jetzt ins Modul "MainChain" *');
           writeln('*                                          *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
     19: begin
           writeln;
           writeln('************************************************');
           writeln('* ... ich erkenne im Modul SUAC das TOKEN      *');
           writeln('*     ',SUAC_Wort_Kontrolle,'                                     *');
           writeln('*     d.h., die Nebenketten haben jeweils      *');
           writeln('*     ',Anzahl,' Kohlenwasserstoff(e)                   *');
           writeln('*     in Form einer ',Struktur,'-Verbindung             *');
           writeln('* ... weiter mit ENTER                         *');
           writeln('************************************************');
           readln;
         end;
     20: begin
           ClrScr;
           writeln;
           writeln('********************************************');
           writeln('* ... ich erkenne ein korrektes "yl"-Ende  *');
           writeln('*     im SUAC-Radical-Zweig                *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
           writeln;
           writeln('********************************************');
           writeln('* ... ich gehe jetzt ins Modul "MainChain" *');
           writeln('*                                          *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
     21: begin
           writeln;
           writeln('************************************************');
           writeln('* ... ich gehe jetzt ins Modul "SUAC"          *');
           writeln('*                                              *');
           writeln('* ... weiter mit ENTER                         *');
           writeln('************************************************');
           readln;
         end;
     22: begin
           ClrScr;
           writeln('****************************************************************');
           writeln('* Ich bin jetzt im Modul "Prefix" und scanne das Startsymbol   *');
           writeln('* der Formel und entscheide damit über den weiteren "Scanweg"  *');
           writeln('* ist StartSymbol = Ziffer    [0..6]                           *');
           writeln('*     dann      gehe ich nach Modul  ---> "POS"                *');
           writeln('*     ansonsten gehe ich nach Modul  ---> "Substituent", wenn  *');
           writeln('*          das Startsymbol = "korrekter" Buchstabe             *');
           writeln('*                  ansonsten Abbruch, da falsches Startsymbol  *');
           writeln('*                                                              *');
           writeln('* Memo: eigentlich redundant in Bezug auf Formula              *');
           writeln('****************************************************************');
         end;
     23: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich gehe jetzt ins Modul "POS"       *');
           writeln('*     da Startsymbol = ',Zeichen,'                   *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
     24: begin
           writeln;
           writeln('********************************************');
           writeln('* ... ich gehe jetzt ins Modul Substituent *');
           writeln('*     da Startsymbol = ',Zeichen,'                   *');
           writeln('* ... weiter mit ENTER                     *');
           writeln('********************************************');
           readln;
         end;
     25: begin
           { noch leer }
         end;
    end;
  end;

 begin
 end.

Benutzer: gast • Besitzer: mthomas • Zuletzt geändert am: