Réponse
En fait, il fallait ne pas toucher à cin (comme ça, pas de sauvegarde nécessaire dans un istream_withassign qui n'existe plus), et récupérer le char * dans une string, qu'on passe ensuite dans une istringstream, qu'on passe elle même dans un istream, qui est filé à yyparse pour sa cuisine via un extern istream *yyin déclaré lui même dans lex.
Simple.