L L 1 - S C A N N E R

Überschrift
 
*****************************************************************
************* KURZE EINLEITUNG ZUR GRAMMATIK LL1 ****************
*****************************************************************
Eine LL1-Grammatik ist eine vereinfachte  Kontextfreie-Grammatik.
Eine LL1-Grammatik kann zur Syntaxanalyse von Programmiersprachen
verwendet werden (einfache deterministische Top - Down- Methode).
 
Grafik
*****************************************************************
*********** REGELN UND EINSCHRÄNKUNG ZUR LL1 GRAMMATIK **********
*****************************************************************
Auf der linken  Regelseite muß genau  ein NichTerminalSymbol (NT)
stehen. Auf der rechten  Seite können Terminals und NichTerminals
wild durcheinander  sein. Sind die  NT- Symbole der linken Regel-
seite identisch, so muß die Schnittmenge der  Beschreibungsmengen
der einzelnen  Regeln  unterschiedlich  sein, d.h. beispielsweise
R1:= <S> -> (c)(f)                                              .
R2:= <S> -> (c)<g> Terminal 'c' ist Schnittmenge  aus  R1 und R2,
und das ist unzulässig, da die LL1- Grammatik  nicht in  der Lage
ist zwischen R1 und R2 zu  entscheiden, welch der  Grammatikregel
zu nehmen ist. Weiterhin ist eine LL1-Grammatik nicht in der Lage
links Rekursive Ausdrücke zu verarbeiten.                       .
*****************************************************************
********* WAS MACHT DER SCANNER MIT DER LL1 GRAMMATIK ***********
*****************************************************************
 
Mit dem Scanner werden die einzelnen Regeln der Grammatik durch-
gekämmt, es wird bestimmt, welche Terminals mit der einzelnen  .
Regel abgedeckt werden. z.B.                                   .
Grafik
 
*****************************************************************
******* FUNKTIONSWEISEN UND EINSCHRÄNKUNGEN ZUM PROGRAMM ********
*****************************************************************
Hinter dem  Programmnamen des Scanners muß eine Datei mit der Er-
weiterung ll1  stehen  (z.B. C:\\>Scanner.exe gramatik.ll1).  Das
Programm ist in  der Lage, 100 Terminal & 100 NichterminalSymbole
zu verarbeiten. TerminalSymbole  werden in runden und Nichttermi-
nalSymbole  werden in  eckige Klammern geschrieben. Namen für ein
Terminal bzw. NichtTerminal dürfen  maximal 19 Zeichen lang sein.
Zulässige Buchstaben für Namen: alle Zeichen außer <>, () und die
ASCII-Zeichen mit der Nummer unterhalb von 32 außer ''. Zwischen
Groß- und  Kleinbuchstaben  wird unterschieden. Zwischen T und NT
können beliebig viele FreiZeichen stehen. Für jede Regel muß eine
neue Zeile begonnen werden. Ist eine  neue Zeile genau am  Anfang
durch ein Semikolon eingeleitet, so wird diese Zeile als Komentar
interpretiert und  somit ignoriert. Es darf also auch keine Leer-
zeilen geben. Nach dem ersten NT muß ein Minus-Strich stehen. Das
Epsilon  ist als '()' zu schreiben. Das Programm ist in der Lage,
eine  LL1- Grammatik vom Umfang 300 Zeilen … 49 Symbole zu verar-
beiten. Eine fertig  verarbeitete  Grammatik  steht  in der Datei
gramatik.ll1 -> 'gramatik.ll$.' Hier  noch ein Beispiel  für eine
Grammatik:                                                      .
;****** eine Grammatik .....                                    .
<type0> -> <simple>                                             .
;******* ZwischenKomentar                                       .
<t#e1>  -> (^) (id) <simple>                                    .
<t_2>   -> ()                                                   .
;******* ENDE ***** ...                                         .

L L 1 - S C A N N E R