def analyzeQuoted(exp): text = expressions.textOfQuotation(exp) ## the common case is to handle simple quotation. if not expressions.isQuasiquoted(exp): return (lambda env, cont: pogo.bounce(cont, text)) else: return analyze(expressions.expandQuasiquotation(text))
def evalQuoted(exp, env, cont): """Returns a quoted expression, using deepQuotedEval to look for UNQUOTE. Consequently, quoted elements are properly turned into cons pairs. """ text = expressions.textOfQuotation(exp) if expressions.isQuasiquoted(exp): expandedExp = expressions.expandQuasiquotation(text) return pogo.bounce(teval, expandedExp, env, cont) else: return pogo.bounce(cont, text)
def t_expand_quote(self, expr, cont): if expressions.isQuasiquoted(expr): expandedExp = expressions.expandQuasiquotation(text) return pogo.bounce(self.t_expand, expandedExp, cont) else: return pogo.bounce(cont, expr)