home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* PARSER.PAS *)
- (* 4.Programm: Untersucht die Sprache *)
- (* ( S=aAb, A=Sc|dB} B=c* ) *)
- (* (c) 1991 Andreas Tengicki & DMV-Verlag *)
- (* ------------------------------------------------------ *)
- PROGRAM Parser;
-
- USES Zketten;
-
- VAR
- Sym : CHAR;
-
- PROCEDURE Error;
- BEGIN
- WriteLn('Fehler !'); Halt;
- END;
-
- PROCEDURE Lese_Next;
- BEGIN
- GetChr(Sym);
- END;
-
- PROCEDURE S; FORWARD;
- PROCEDURE A; FORWARD;
- PROCEDURE B; FORWARD;
-
- PROCEDURE S;
- BEGIN
- IF Sym = 'a' THEN Lese_Next
- ELSE Error;
- A;
- IF Sym = 'b' THEN Lese_Next
- ELSE Error;
- END;
-
- PROCEDURE A;
- BEGIN
- IF Sym IN ['a'] THEN BEGIN
- S;
- IF Sym = 'c' THEN Lese_Next
- ELSE Error;
- END ELSE IF Sym IN ['d'] THEN BEGIN
- IF Sym = 'd' THEN Lese_Next
- ELSE Error;
- B;
- END ELSE
- Error;
- END;
-
- PROCEDURE B;
- BEGIN
- WHILE Sym IN ['c'] DO
- Lese_Next;
- END;
-
- BEGIN
- WriteLn;
- WriteLn;
- WriteLn('Parserstrategien 4.Programm');
- WriteLn(' Parser');
- WriteLn;
- Write(': '); Lese_Next; (* erstes Symbol lesen ... *)
- S;
- IF Sym <> '.' THEN Error;
- Write('Wort erkannt');
- END.
- (* ------------------------------------------------------ *)
- (* Ende von PARSER.PAS *)
-