Layout rules - Einrücken von Gofercode



next up previous contents
Next: Ein- und Ausgabe Up: Gofer-Kurzübersicht Previous: Kommentare

Layout rules - Einrücken von Gofercode

Gofer benutzt das Einrücken einzelner Programmteile gegenüber dem Rest des Programms zur Erkennung der Struktur des Programms (Geltungsbereiche von lokalen Definitionen (where, let) und Alternativen eines case Ausdrucks).
Beispiel:

        f x y = g ( x + w )
                where g u = u + v
                        where v = u * u
                w = 2 + y
Durch das Einrücken der zweiten 'where'-Klausel wird deutlich, dav eine lokale Variable der Definition von g ist, während w (genauso weit eingerückt wie die Definition von g) zu der Definition von f gehört.
Eigentlich erwartet Gofer ein Programm, bei dem die Struktur durch Klammerung mit '{ ' und '} ' (bei mehreren, getrennt durch ';') eindeutig wird:
        f x y = g ( x + w )
                where { g u = u + v
                        where { v = u * u
                        }; w = 2 + y
                }
Die Eingabe dieser Klammerung ist jedoch nicht nötig, da sie durch das Einrücken einzelner Programmteile automatisch eingefügt werden kann. Dabei wird nach folgenden Regeln (Layout-Rules) verfahren:
	let a = fact 12 in a + a
wird übersetzt in
	let {a = fact 12} in a + a
('in' ist unerwartetes Token)
Leere Zeilen (mit tabs und blanks) und Kommentare haben keinen Einfluauf die Layout-Rules. Tabs werden als 8 Zeichen Einrücktiefe betrachtet und das EOF-Token muEinrücktiefe Null besitzen (d.h. hinter der letzten Zeile des Files, die Text enthält (auch Kommentare) mu(mind.) ein Return folgen).



Sven Eric Panitz
Mo., 23. Okt. 1995, 12:31:09