next up previous


Vorgaben an die Gruppe Scanner

Die Tokenklassen sind eindeutig durch einen Nummernschlüssel identifiziert:


\begin{spacing}{1.00}
\vspace{0.3cm}
{\raggedright\begin{tabular}{\vert r\vert l...
...ine
86&
{[}&
\\
\hline
87&
{]}&
\\
\hline
\end{tabular}\par }
\end{spacing}

Vorgaben an die Gruppe Parser

Aufbau jeder Zeile aus sbaum.dat

( Tokenklasse), \( 1.\, Nachfolger \), \( 2.\, Nachfolger \), ..., \( n.\, Nachfolger \), [ Zeilennummer, Spaltennummer], Symbol

1.
Tokenklasse: entspricht einem eindeutigen Nummernschlüssel
2.
Nachfolger: ist eine natürliche Zahl, die auf die Zeile in der Datei sbaum.dat zeigt, in der das entsprechende Blatt des Knotens steht.
3.
Zeilennummer: enthält die Zeilennummer der Quelltextzeile
4.
Spaltennummer: enthält die Spaltennummer der Quelltextzeile
5.
Symbol: hier wird das Symbol aus dem Quelltext eingetragen, erforderlich ist das Symbol nur bei Variablen, Sonderzeichen, Konstanten , Operationen oder Procedurnamen
Bei Regeln, wie z. B. arithmetischerAusdruck ::= '(' arithmetischer Ausdruck BINARYARITHOP arithmetischerAusdruck ')', wird der Tokenklasse

1.
falls ein Terminalsymbol < 80 auf der rechten Seite steht, das erste Terminalsymbol < 80 zugewiesen
2.
falls ein Terminalsymbol >= 80 auf der rechten Seite steht, das erste Terminalsymbol >= 80 zugewiesen
3.
sonst wird das Terminalsysmbol 80 verwendet
Beispiele:

1.
Parameterliste ::= '(' formaleParameterfolge ')' ==> Token 83 (Regel 2)
2.
Variablendeklaration ::= Variablendeklaration Prozedurdeklaration ==> Token 80 (Regel 3)
3.
arithmetischerAusdruck ::= '(' arithmetischer Ausdruck BINARYARITHOP arithmetischerAusdruck ')' ==> Token 21 (Regel 1)
Der Knoten verweist dann auf alle nicht-terminalen Symbole im rechten Teil der Regel. In Beispiel 1. hat das Token 80 einen Nachfolger ``formaleParameterfolge''.

Beispieldatei

c:=2*(u+2.0)


\begin{spacing}{1.00}
\vspace{0.3cm}
{\raggedright\begin{tabular}{\vert c\vert l...
...2),0,0,{[}1,9{]},2.0\\
\hline
\end{tabular}\par }
\vspace{0.3cm}
\end{spacing}


\begin{spacing}{1.00}
\vspace{0.3cm}
{\raggedright\resizebox*{14cm}{!}{\includegraphics{sbaum.eps}}\par }
\end{spacing}


next up previous
Dietmar Lammers
1998-06-16