Showing
2 changed files
with
4 additions
and
4 deletions
... | @@ -907,10 +907,12 @@ class Expression (ArcAnnotation) : | ... | @@ -907,10 +907,12 @@ class Expression (ArcAnnotation) : |
907 | else : | 907 | else : |
908 | env = binding._dict | 908 | env = binding._dict |
909 | env["__binding__"] = binding._dict | 909 | env["__binding__"] = binding._dict |
910 | + env["__globals__"] = self.globals | ||
910 | try : | 911 | try : |
911 | return Token(self.globals(self._expr, env)) | 912 | return Token(self.globals(self._expr, env)) |
912 | finally : | 913 | finally : |
913 | del env["__binding__"] | 914 | del env["__binding__"] |
915 | + del env["__globals__"] | ||
914 | def __call__ (self, binding) : | 916 | def __call__ (self, binding) : |
915 | """Returns the value from `bind` (but not encapsulated in a | 917 | """Returns the value from `bind` (but not encapsulated in a |
916 | `Token`). | 918 | `Token`). | ... | ... |
... | @@ -67,11 +67,9 @@ def unlet (expr, *names) : | ... | @@ -67,11 +67,9 @@ def unlet (expr, *names) : |
67 | return unparse(new), drop.calls | 67 | return unparse(new), drop.calls |
68 | 68 | ||
69 | class MakeLet (object) : | 69 | class MakeLet (object) : |
70 | - def __init__ (self, globals) : | ||
71 | - self.globals = globals | ||
72 | def match (self, match, binding) : | 70 | def match (self, match, binding) : |
73 | env = dict(binding) | 71 | env = dict(binding) |
74 | - env.update(iter(self.globals)) | 72 | + env.update(env["__globals__"]) |
75 | exec("", env) | 73 | exec("", env) |
76 | old = set(env) | 74 | old = set(env) |
77 | exec(match, env) | 75 | exec(match, env) |
... | @@ -95,5 +93,5 @@ def extend (module) : | ... | @@ -95,5 +93,5 @@ def extend (module) : |
95 | class PetriNet (module.PetriNet) : | 93 | class PetriNet (module.PetriNet) : |
96 | def __init__ (self, name, **args) : | 94 | def __init__ (self, name, **args) : |
97 | module.PetriNet.__init__(self, name, **args) | 95 | module.PetriNet.__init__(self, name, **args) |
98 | - self.globals["let"] = MakeLet(self.globals) | 96 | + self.globals["let"] = MakeLet() |
99 | return PetriNet, unlet | 97 | return PetriNet, unlet | ... | ... |
-
Please register or login to post a comment