AST-Knoten & Scanning

null
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 168
Registriert: 21. Apr 2012 14:58

AST-Knoten & Scanning

Beitrag von null » 12. Feb 2014 14:30

Hallo zusammen,

ich habe eine Frage zu Aufgabe 1.7. Dort soll man unter anderem die Namen der Java-Klassen des AST nennen. Im Buch ist dabei folgende Konvention getroffen worden:

- Für alle Nicht-Terminalsymbole wird eine abstrakte Klasse eingeführt (z.B. bei Triangle die abstrakte Klasse "Command").
- Für jede Möglichkeit, ein Nichtterminalsymbol abzuleiten, wird eine Klasse eingeführt, die von der abstrakten Klasse erbt z.B. bei Triangle "IfCommand"). Mit "Möglichkeit" meine ich X und Y bei N:=X|Y.

In der Lösung wird gar nicht mehr zwischen den abstrakten und den abgeleiteten Klassen unterschieden. Warum? Sonst wären das noch ein paar Klassen mehr.

Außerdem habe ich eine Frage zum Scannen. In den Folien steht, dass ähnlich wie beim Parser für jedes Nicht-Terminal N eine scanN-Methode eingeführt wird. So wie ich das sehe, ist das aber gar nicht der Fall. Im Buch, S.120 - 121, sieht man, dass die komplette lexikalische Grammatik eigentlich vollständig in der scanToken() Methode verbaut ist. So ist es dann auch in der Lösung.

Übersehe ich da was oder werden tatsächlich keine scanN-Methoden gebraucht?

Vielen Dank
null

Julian Oppermann
Mausschubser
Mausschubser
Beiträge: 88
Registriert: 3. Mai 2013 19:32

Re: AST-Knoten & Scanning

Beitrag von Julian Oppermann » 13. Feb 2014 11:33

null hat geschrieben: Mit "Möglichkeit" meine ich X und Y bei N:=X|Y.
"Alternative" ist der passendere Begriff.
null hat geschrieben: In der Lösung wird gar nicht mehr zwischen den abstrakten und den abgeleiteten Klassen unterschieden. Warum? Sonst wären das noch ein paar Klassen mehr.
Das stimmt, die Unterscheidung war aber auch in der Aufgabenstellung nicht gefragt. Aber welche zusätzlichen Klassen würden Sie denn noch definieren wollen? Es sind doch eigentlich alle Alternativen abgedeckt.
null hat geschrieben: Übersehe ich da was oder werden tatsächlich keine scanN-Methoden gebraucht?
Im Buch wird vor der Konstruktion der Scanners noch die Grammatik umgeformt (Formeln 4.22+4.23, siehe auch Folie 2-80), so dass als Nichtterminale nur Token und Separator übrig bleiben. Für diese beiden Produktionen wird dann gemäß
Folie 2-78 hat geschrieben:Implementiere Scan-Methoden scanN für jede Produktion N ::= X, mit Rumpf passend zu X
scanToken und scanSeparator implementiert.

Antworten

Zurück zu „Archiv“