Pascal (ネストされたサブルーチンを許可する) などの静的スコープのネストされた言語のソースを解析しながら、バインディング情報 (ソースで検出された名前と値のペアのリスト) を維持する方法はありますか? 問題は、ネストされた 2 つのサブルーチンを含む外部レベルのルーチンがある場合、2 番目に解析されたサブルーチンは、グローバルまたは外部レベルのルーチン内で確立されたバインディングを「継承」する必要がありますが、最初に解析されたものは継承しないことです。ルーティーン。したがって、モナドパーサーでは問題を処理できないように思えますが、それは私がそれらを十分に使用する方法を知らないためかもしれません。
procedure outer;
var somevar : integer;
procedure inner1;
var in1 : char;
begin
something;
end;
procedure inner2;
var in2 : Boolean;
begin
something_else; (* in1 is not visible here of course *)
end;
begin
inner1;
inner2;
end;
何か案は ?十分に明確に説明したことを願っています。