def t_expand_setbang(self, expr, cont): variable = expressions.assignmentVariable(expr) value = expressions.assignmentValue(expr) def c_expanded(expandedValue): return pogo.bounce( cont, expressions.makeAssignment(variable, expandedValue)) return pogo.bounce(self.t_expand, value, c_expanded)
def evalAssignment(exp, env, cont): def c(val): environment.setVariableValue(expressions.assignmentVariable(exp), val, env) return pogo.bounce(cont, Symbol("ok")) return teval(expressions.assignmentValue(exp), env, c)
def analyzeAssignment(exp): varName = expressions.assignmentVariable(exp) analyzedValueBody = analyze(expressions.assignmentValue(exp)) def analyzed(env, cont): def c(varVal): environment.setVariableValue(varName, varVal, env) return pogo.bounce(cont, Symbol("ok")) return pogo.bounce(analyzedValueBody, env, c) return analyzed