Die Tokenklassen sind eindeutig durch einen Nummernschlüssel identifiziert:
- die Datei ``sbaum.dat'' enthält den Strukturbaum
- in jeder Zeile steht ein Knoten des Baumes
- der Baum muß keine binäre Struktur haben
- der Baum muß nicht balanciert sein
- die erste Zeile enthält die Wurzel des Baumes
- der n.-te Knoten steht in der n.-ten Zeile
- Leerzeichen können zur Übersicht verwendet werden
(
Tokenklasse),
,
,
...,
,
[
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''.
c:=2*(u+2.0)
Dietmar Lammers
1998-06-16