Lexical Scope

Auf welche Namen an welcher Stelle im Programm Bezug genommen werden kann, definiert der so genannte Scope in einer konkreten Programmiersprache.

Es gibt drei Muster nach denen die Gültigkeit von Namen in Programmteilen geregelt ist:

Lexical Scope oder Static Scope:
In diesem Schema gelten die Namen nur in dem Bereich, in dem sie definiert sind. Der Gültigkeitsbereich ist direkt aus dem Programmtext ersichtlich, woher der Name “lexical scope” rührt.

Fundamentalbegriff 7 (Lexical Scope)   Beim Lexical-Scope-Verfahren gelten Namen nur in den Funktionen, die die Namensdefinition enthalten, bzw. in solchen, die innerhalb dieser Funktion als verschachtelte Funktionen definiert werden.

Mit dem `lexical scope' kann wie in der Programmiersprache Algol ein `dynamic extent' verbunden sein, oder wie in Common-Lisp und in Scheme der `indefinite extent'.

Letzterer bedeutet, dass alle Variablen unbegrenzte Lebensdauer haben. Die unbegrenzte Lebensdauer wird allerdings dadurch eingeschränkt, dass Variable, die von nirgendwoher mehr im Programm erreicht werden können, als Müll vom Garbage-Collector beseitigt werden.

Closures können auch gesehen werden als Funktionen mit `lexical scope' und `indefinite extent'.

Dynamic Scope:
Eine Variable kann von überall her im Programm direkt mit ihrem Namen angesprochen werden.

Global und Local Scope:
Beim `global scope' besitzt eine Variable überall Gültigkeit. Beim `local scope' gilt eine Variable nur in der Funktion, in der sie definiert wurde, ohne dass sich diese Gültigkeit auf tiefere Ebenen fortpflanzen würde.



Georg Loczewski 2003-08-07