EBNF-Analysis
First off all the programs EBNF for feed:
* Syntax = {Production} ".". Production = Identifier "=" Expression ".". Expression = Term {"|" Term}. Term = Factor {Factor}. Factor = Identifier | Literal | "(" Expression ")" | "[" Expression "]" | "{" Expression "}" . Identifier= "A" | "B" | "C" {Identifier}. Literal= "'" ( "a" | "b" | "c" | "1" | "2" | "3") "'". .now her's the program:
{ ************************************************************ Name : EBNF Description : Syntax-Analysis for EBNF, equal to program 2, N.Wirth Compilerbau, page 32. Date : 94.09.02 Author : H.Mucker ************************************************************} PROGRAM Ebnf (input,output); CONST MAXSTRLEN = 15; LOWER = ['a'..'z']; UPPER = ['A'..'Z']; CIPHER = ['0'..'9']; VAR ch : char; inFile : text; symbol : tString; { ************************************************************ S T R I N G - P R O D E D U R E S ************************************************************} PROCEDURE StrReadln (VAR ioString : tString); VAR i : integer; ch : char; BEGIN i:= 1; REPEAT read(ch); ioString[i]:= ch; i:= i+1 UNTIL EOLN(input) or (i > MAXSTRLEN); readln; IF i <= MAXSTRLEN THEN REPEAT ioString[i]:= chr(32); i:= i+1 UNTIL i > MAXSTRLEN END; { StrReadln } PROCEDURE StrEmpty (var ioString : tString); VAR i : integer; BEGIN for i:= 1 to MAXSTRLEN do ioString[i]:= ' ' END; { StrEmpty } PROCEDURE StrWrite (inString : tString); VAR i,e : integer; BEGIN e:= MAXSTRLEN; WHILE (inString[e] = chr(32)) and (e >= 1) DO e:= e-1; FOR i:= 1 TO e DO write(inString[i]) END; { StrWrite } PROCEDURE StrWriteln (inString : tString); BEGIN strWrite(inString); writeln END; { StrWriteln } FUNCTION StrLen (inString : tString) : integer; VAR i : integer; BEGIN i:= MAXSTRLEN; WHILE (inString[i] = chr(32)) and (i >= 1) DO i:= i-1; strLen:= i END; { StrLen } FUNCTION StrComp (inStringA,inStringB : tString) : boolean; VAR i : integer; equal : boolean; BEGIN i:= 1; REPEAT equal:= (inStringA[i] = inStringB[i]); i:= i+1 UNTIL (not equal) or (i > MAXSTRLEN); strComp:= equal END; { StrComp } { ************************************************************ A N A L I Z I N G - P R O C E D U R E S { ************************************************************} PROCEDURE Error; BEGIN writeln('error'); halt END; { Error } PROCEDURE GetSym; BEGIN REPEAT read(inFile,ch); { write(ch); } { IF EOLN(inFile) THEN begin writeln; end } UNTIL (ch > ' '); END; { GetSym } PROCEDURE Production; PROCEDURE Identifier; VAR i : integer; BEGIN StrEmpty(symbol); i:= 1; WHILE ch in LOWER+UPPER DO BEGIN symbol[i]:= ch; i:= i+1; GetSym END; write('IDENTIFIER: '); StrWriteLn(symbol); END; { Identifier } PROCEDURE Literal; VAR i : integer; BEGIN StrEmpty(symbol); i:= 1; WHILE ch <> '"' DO BEGIN symbol[i]:= ch; i:= i+1; GetSym END; write('LITERAL: '); StrWriteLn(symbol); END; { Literal } PROCEDURE Expression; PROCEDURE Term; PROCEDURE Factor; BEGIN { Factor } IF ch in UPPER+LOWER THEN { Non-Terminal Symbol } Identifier ELSE IF ch = '"' THEN { Terminal Symbol } BEGIN GetSym; Literal; IF ch = '"' THEN GetSym ELSE Error END ELSE IF ch = '(' THEN BEGIN GetSym; Expression; IF ch = ')' THEN GetSym ELSE Error END ELSE IF ch = '[' THEN BEGIN GetSym; Expression; IF ch = ']' THEN GetSym ELSE Error END ELSE IF ch = '{' THEN BEGIN GetSym; Expression; IF ch = '}' THEN GetSym ELSE Error END ELSE Error END; { Factor } BEGIN { Term } Factor; WHILE (ch in UPPER+LOWER) or (ch = '"') or (ch = '(') or (ch = '[') or (ch = '{') DO Factor END; { Term } BEGIN { Expression } Term; WHILE ch = '|' DO BEGIN GetSym; Term END END; { Expression } BEGIN { Production } Identifier; IF ch = '=' THEN GetSym ELSE error; Expression; IF ch = '.' THEN GetSym ELSE error END; { Production } { ************************************************************ P R O G R A M ************************************************************} BEGIN assign(inFile,'ebnf'); reset(inFile); GetSym; WHILE ch <> '.' DO Production; writeln; END.
Alle Touren
Schneebergwege
- Bergrettungssteig
- Emmysteig
- Fadensteig
- Ferdinand Mayr-Weg
- Fischersteig
- Franz-Josef-Promenade
- Hotelries
- Hochgang
- Krummbachgraben
- Kuhschneeberg
- Kuhsteig
- Lärchkogelgrat
- Nandlgraben
- Nandlgrat
- Nandlgrat (Alter Nandlsteig)
- Niederlauf
- Novembergrat
- Nördlicher Grafensteig
- Oberer Herminensteig
- Oktobergrat
- Stadelwandgraben
- Südlicher Grafensteig
- Unterer Herminensteig
- Waxriegel
- Weichtalklamm
Raxsteige
- Alpenvereinssteig
- Altenbergsteig
- Bärenlochsteig
- Brandschneide
- Camillo Kronich-Steig
- Gaisloch
- Gamsecksteig
- Gretchensteig
- Göbl Kühn-Steig
- Großes Fuchsloch
- Großes Wolfstal
- Großer Kesselgraben
- Ho Chi Minh Pfad
- Hoyossteig
- Karl Kantner-Steig
- Kaisersteig
- Kontruszsteig
- Kronich Eisenweg
- Martinsteig
- Peter Jokel-Steig
- Preinerwandsteig
- Raxenmäuersteig
- Reisstalersteig
- Rudolfsteig
- Schlangenweg
- Staudengraben
- Wildfährte
- Teufelsbadstubensteig
- Törlweg
- Waxriegelsteig
- Wachthüttelkamm
Geführte Touren
- Gösing Hoyos-Steig
- Schneeberg Oktobergrat
- Gösing Hoyos-Steig
- Gösing und Flatzer Wand
- Gösing Hoyos-Steig
- Kienberg und Himberg
- Flatzer Wand und Gösing
- Gösing Hoyos-Steig
- Gahns Saurüssel
- Rax mit Schneeschuhen
- Himberg und Kienberg
- Flatzer Wand und Gösing
- Gösing Hoyossteig
- Prettschachersteig und Krummbachstein
- Schneeberg Oktobergrat
- Gösing Hoyossteig
- Semmering Bahnwanderweg
- Miesenbach Biedermeierrunde
- Gösing Hoyossteig
- Rax mit Schneeschuhen
- Flatzer Wand und Gösing
- Gösing Hoyossteig
- Schneeberg Novembergrat
- Schneeberg Grafensteig und Hengst
- Schneeberg Nandlgrat
- Gösing Hoyossteig
- Gahns Saurüssel
- Biedermeierrunde Miesenbach
- Gösing Hoyossteig
- Gösing Hoyossteig
- Rax mit Schneeschuhen
- Gahns Saurüssel
- Rax mit Schneeschuhen
- Gösing Hoyossteig
- Schneeberg Novembergrat
- Krummbachstein
- Schneeberg Oktobergrat
- Schneeberg Alter Nandlsteig
- Schneeberg Herminensteig
- Gösing und Flatzer Wand
- Rax mit Schneeschuhen
- Gösing Hoyossteig
- Schneeberg_Novembergrat
- Schneeberg Alter Nandlsteig
- Schneeberg Herminensteig
- Schneeberg Brandmauer und Stadelwand
- Schneeberg und Hengst
- Gösing Hoyos-Steig
- Rax mit Schneeschuhen
- Schneeberg Herminensteig und Hengst
- Schneeberg Novembergrat
- Schneeberg Herminensteig
- Schneeberg Herminensteig
- Schneeberg Alter Nandlsteig
- Miesenbach Biedermeierrunde
- Flatzer Wand und Gösing
- Dürre Leiten mit Schneeschuhen
- Rax mit Schneeschuhen
- Dürre Leiten mit Schneeschuhen
- Schneeberg Brandmauer
- Schneeberg Novembergrat
- Miesenbach Biedermeierrrunde
- Gahns Eng und Saurüssel mit Schneeschuhen
- Kuhschneeberg mit Schneeschuhen
- Novembergrat
- Nördlicher Grafensteig und Hengst
- Miesenbach Biedermeierrunde
- Flatzer Wand und Gösing
- Großes Wolfstal
- Alter Nandlsteig
- Herminensteigvariationen
- Gahns Saurüssel mit Schneeschuhen
- Dürre Leiten mit Schneeschuhen
- Kuhschneeberg mit Schneeschuhen
- Flatzer Wand und Gösing
- Großes Wolfstal
- Alter Nandlsteig
- Biedermeierrunde in Miesenbach
- Gahns Saurüssel und Eng