result = (*parse->third->func)( parse->third, frame );
result = parse_evaluate( parse->third, frame );
compile_local(    PARSE   *parse,    FRAME *frame ){    LIST *l;    SETTINGS *s = 0;    LIST    *nt = (*parse->left->func)( parse->left, frame );    LIST    *ns = (*parse->right->func)( parse->right, frame );    LIST    *result;    if( DEBUG_COMPILE )    {        debug_compile( 0, "local" );        list_print( nt );        printf( " = " );        list_print( ns );        printf( "\n" );    }    /* Initial value is ns */    for( l = nt; l; l = list_next( l ) )        s = addsettings( s, 0, l->string, list_copy( (LIST*)0, ns ) );    list_free( ns );    list_free( nt );    /* Note that callees of the current context get this "local" */    /* variable, making it not so much local as layered. */    pushsettings( s );    result = (*parse->third->func)( parse->third, frame );    popsettings( s );    freesettings( s );    return result;}