def compile_to_parse_tree(code, path='', loader=None, options=None, context_class=None):
    # Make the loader also parse the templates
    def new_loader(include_path):
        return parse( (loader or _default_loader)(include_path), include_path, context)

    # Create preprocess context
    context = (context_class or Context)(path, new_loader, options)

    # Parse template, and return output
    return parse(code, path, context, main_template=True), context
 def new_loader(include_path):
     return parse( (loader or _default_loader)(include_path), include_path, context)