有没有办法在解析静态范围嵌套语言(例如 Pascal(允许嵌套子例程))的源代码时维护绑定信息(在源代码中遇到的名称-值对列表)?困难在于,如果有一个包含两个嵌套子例程的外层例程,则第二个解析的子例程应该“继承”全局或在外层例程中建立的绑定,而不是第一个解析的绑定常规。因此,在我看来,你不能用一元解析器来处理这个问题,但这可能是因为我不知道如何足够好地使用它们。
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;
有任何想法吗 ?我希望我解释得足够清楚。