Lexikalisches Scoping vs. dynamisches Scoping
Ich habe also dieses Problem, bei dem ich die Ausgabe mithilfe von zwei unterschiedlichen Bereichsregeln ermitteln muss. Ich kenne die Ausgabe mit lexikalischem Scopinga=3
undb=1
, aber es fällt mir schwer, die Ausgabe mit dynamischem Scoping herauszufinden.
Hinweis: Das folgende Codebeispiel verwendet die C-Syntax, aber behandeln wir es einfach als Pseudo-Code.
int a,b;
int p() {
int a, p;
a = 0; b = 1; p = 2;
return p;
}
void print() {
printf("%d\n%d\n",a,b);
}
void q () {
int b;
a = 3; b = 4;
print();
}
main() {
a = p();
q();
}
Folgendes habe ich mir ausgedacht. Mit Dynamic Scoping verweisen die nichtlokalen Verweise aufa
undb
kann wechseln. Also habe icha=2
(Rückkehr von p ()), dannb=4
(innerhalb von q ()). Die Ausgabe ist also2 4
?