home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9101 / parser / parser.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1991-09-12  |  1.5 KB  |  70 lines

  1. (* ------------------------------------------------------ *)
  2. (*                      PARSER.PAS                        *)
  3. (*  4.Programm: Untersucht die Sprache                    *)
  4. (*              ( S=aAb, A=Sc|dB} B=c* )                  *)
  5. (*        (c) 1991 Andreas Tengicki & DMV-Verlag          *)
  6. (* ------------------------------------------------------ *)
  7. PROGRAM Parser;
  8.  
  9. USES Zketten;
  10.  
  11. VAR
  12.   Sym : CHAR;
  13.  
  14.   PROCEDURE Error;
  15.   BEGIN
  16.     WriteLn('Fehler !');  Halt;
  17.   END;
  18.  
  19.   PROCEDURE Lese_Next;
  20.   BEGIN
  21.     GetChr(Sym);
  22.   END;
  23.  
  24.   PROCEDURE S;  FORWARD;
  25.   PROCEDURE A;  FORWARD;
  26.   PROCEDURE B;  FORWARD;
  27.  
  28.   PROCEDURE S;
  29.   BEGIN
  30.     IF Sym = 'a' THEN Lese_Next
  31.                  ELSE Error;
  32.     A;
  33.     IF Sym = 'b' THEN Lese_Next
  34.                  ELSE Error;
  35.   END;
  36.  
  37.   PROCEDURE A;
  38.   BEGIN
  39.     IF Sym IN ['a'] THEN BEGIN
  40.       S;
  41.       IF Sym = 'c' THEN Lese_Next
  42.                    ELSE Error;
  43.     END ELSE IF Sym IN ['d'] THEN BEGIN
  44.       IF Sym = 'd' THEN Lese_Next
  45.                    ELSE Error;
  46.       B;
  47.     END ELSE
  48.       Error;
  49.   END;
  50.  
  51.   PROCEDURE B;
  52.   BEGIN
  53.     WHILE Sym IN ['c'] DO
  54.       Lese_Next;
  55.   END;
  56.  
  57. BEGIN
  58.   WriteLn;
  59.   WriteLn;
  60.   WriteLn('Parserstrategien 4.Programm');
  61.   WriteLn('     Parser');
  62.   WriteLn;
  63.   Write(': '); Lese_Next;    (* erstes Symbol lesen ... *)
  64.   S;
  65.   IF Sym <> '.' THEN Error;
  66.   Write('Wort erkannt');
  67. END.
  68. (* ------------------------------------------------------ *)
  69. (*                Ende von PARSER.PAS                     *)
  70.