| 1 | % (c) 2009-2015 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, | |
| 2 | % Heinrich Heine Universitaet Duesseldorf | |
| 3 | % This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) | |
| 4 | ||
| 5 | :- module(zenvironment, | |
| 6 | [lookup_type/3 | |
| 7 | ,create_subenv/3 | |
| 8 | ,env_z_defs/2 | |
| 9 | ,zlookup/2 | |
| 10 | ,zlookup_schema/4 | |
| 11 | %,create_scope_typeinfos/2 | |
| 12 | %,lookup_typeinfo/5 | |
| 13 | %,all_schemas/2 | |
| 14 | ,create_initial_zenvironment/2 | |
| 15 | ]). | |
| 16 | ||
| 17 | ||
| 18 | :- use_module(probsrc(module_information)). | |
| 19 | :- module_info(group,proz). | |
| 20 | :- module_info(description,'This module provides predicates to access a type environment for Z specifications.'). | |
| 21 | ||
| 22 | lookup_type(env(_,Vars),Var,Type) :- member(variable(Var,T),Vars),!,T=Type. | |
| 23 | lookup_type(env(Up,_),Var,Type) :- lookup_type(Up,Var,Type). | |
| 24 | ||
| 25 | %all_schemas(Env,Names) :- env_z_defs(Env,Defs),findall(Name,zlookup_schema2(Defs,Name,[],_),Names). | |
| 26 | ||
| 27 | zlookup_schema(Env,Name,Params,Expr) :- env_z_defs(Env,Defs),zlookup_schema2(Defs,Name,Params,Expr),!. | |
| 28 | zlookup_schema2(Defs,Name,Params,Expr) :- member(sdef(shead(Name,Params),Expr),Defs). | |
| 29 | zlookup_schema2(Defs,Name,Params,Expr) :- member(defeq(shead(Name,Params),Expr),Defs). | |
| 30 | zlookup_schema2(Defs,Name,Params,Expr) :- member(eqeq(lhs(Name,Params),Expr),Defs). | |
| 31 | ||
| 32 | zlookup(Env,Entry) :- env_z_defs(Env,D),member(Entry,D). | |
| 33 | ||
| 34 | create_initial_zenvironment(Defs,zdef(Defs)). | |
| 35 | ||
| 36 | env_z_defs(zdef(D),D). | |
| 37 | env_z_defs(env(Up,_),D) :- env_z_defs(Up,D). | |
| 38 | ||
| 39 | create_subenv(Env,Vars,env(Env,Vars)). | |
| 40 | ||
| 41 | %create_scope_typeinfos(Env,tenv(TI)) :- | |
| 42 | % Env = env(_,Vars), | |
| 43 | % findall(tinfo(Name,_Expr,Env,Type), member(variable(Name,Type),Vars), TI). | |
| 44 | ||
| 45 | %lookup_typeinfo(tenv(Tenv),Name,Expr,Env,Type) :- | |
| 46 | % member(tinfo(Name,Expr,Env,Type),Tenv). |