In article <
kurtzlepirate-F23...@news-1.proxad.net>,
kurtz le pirate <
kurtzl...@yahoo.fr> wrote:
>
>bonjour,
>
>je ne comprends pas pour quoi le morceau de code ci dessous ne
>fonctionne pas correctement.
>
>le but est de lire un fichier "eps" et d'en extraire les "macros".
>
>une macro est définie par un "/" suivi du nom, puis une accolade
>ouvrante, une ou plusieurs fonctions, une accolade fermante et le mot
>clé "dbf" à la fin. (comme les fonction peuvent être imbriquées, il peut
>y avoir des accolades à l'intérieur des accolades exemples :
> /n{newpath}bdf
> /Xic{matrix invertmatrix concat}bdf
> /S{gsave {stroke}fp grestore}bdf
> /logtaper{9 mul 1 add log}bdf
>
C'est des definitions de fonction. Et tu ne vas reconnaitre que ceux qui
succedent a la definition de bdf (qui a des chances d'etre
/bdf{bind def}def
>j'ai donc écrit :
>
>while(<EPSFILE>) {
> chomp;
> if(m#\A\/([a-zA-Z]*?){([a-zA-Z0-9 {}]*?)}bdf\Z#) {
> ($macroName,$macroDef) = ($1,$2);
> printf("%04d : %-12s -> %-12s\n",$lineNum,$macroName,$macroDef);
> }
> $lineNum++;
> }
>
>rien de spécial... sauf que certaines lignes dans le fichier ne sont pas
>reconnues, comme par exemple :
>
> /filler{fill}bdf
>
>et la... je sèche !!!
Bon, tu ne vas traiter QU'UN tout petit sous-ensemble des fichiers eps.
Il n'y a aucune raison que tes definitions soient la a raison d'une
par ligne, tes caracteres de mot-cle sont un peu restreints, et il peut
y avoir des tonnes de caracteres que tu ne reconnais pas dans une definition...
J'avoue que je ne regarderai pas bien plus en detail ce que tu fais la, mais
je t'encourage chaudement a regarder d'un peu plus pres a quoi ressemble
PostScript.