Source PostScript (tnode.pps)

Retour Texte non formaté
%% syntaxe : string/lit mode proc1 proc2 proc3 genericTnode -> cree un noeud d'arbre /genericTnode { 3 dict begin /procpict exch def /proctex exch def /procstring exch def /modestring exch def %% y a-til un argument dup xcheck { %% non emptynode dup modestring put_type_noeud } { %% faut voir => on recipere le lexeme precedent dup /contenu exch def %% phrase ou litteral => c'est un argument contenu isstring contenu isname or { pop emptynode dup contenu put_contenu_noeud dup modestring put_type_noeud contenu isstring { %% ce peut-etre du texte ou un objet pict contenu length 0 eq { %% chaine vide dup procstring cvx put_affichage_noeud } { contenu 0 get 33 eq { %% objet pict dup contenu cdr put_contenu_noeud dup procpict cvx put_affichage_noeud } { %% du texte dup procstring cvx put_affichage_noeud } ifelse } ifelse %% %% ce peut-etre du texte ou un objet pict %% contenu 0 get 33 eq { %% %% objet pict %% dup contenu cdr put_contenu_noeud %% dup procpict cvx put_affichage_noeud %% } { %% %% du texte %% dup procstring cvx put_affichage_noeud %% } ifelse } { %% un label tex dup proctex cvx put_affichage_noeud } ifelse } {%% pas d'argument emptynode dup modestring put_type_noeud } ifelse } ifelse end } def %% syntaxe : string/lit Tc -> cree un noeud circulaire contenant %% "string" ou le label TeX indique par lit /Tc { (cnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) (3 -1 roll bcpict) genericTnode } def /Tcc { (cnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) (3 -1 roll ccpict) genericTnode } def /TC { (Cnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) (3 -1 roll bcpict) genericTnode } def /TCc { (Cnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) (3 -1 roll ccpict) genericTnode } def /Tr { (node) (bctext) (3 -1 roll chargetexlabel bctexlabel) (3 -1 roll bcpict) genericTnode } def /Trc { (node) (cctext) (3 -1 roll chargetexlabel cctexlabel) (3 -1 roll ccpict) genericTnode } def /TR { (Rnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) (3 -1 roll bcpict) genericTnode } def /TRc { (Rnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) (3 -1 roll ccpict) genericTnode } def /Tb { (bnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) (3 -1 roll bcpict) genericTnode } def /Tbc { (bnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) (3 -1 roll ccpict) genericTnode } def %% noeud fantome /Tf { emptynode dup (node) put_type_noeud dup false put_relie_noeud } def /Tdot { (!pictdot) Tr } def /Tdia { (dianode) (bctext) (3 -1 roll chargetexlabel bctexlabel) (3 -1 roll bcpict) genericTnode } def /Tdiac { (dianode) (cctext) (3 -1 roll chargetexlabel cctexlabel) (3 -1 roll ccpict) genericTnode } def /Toval { (ovalnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) (3 -1 roll bcpict) genericTnode } def /Tovalc { (ovalnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) (3 -1 roll ccpict) genericTnode } def setTimes /nomme_noeud { 1 dict begin /le_nom exch def dup le_nom put_name_noeud end } def /nodename { nomme_noeud } def /non_relie { dup false put_relie_noeud } def /param_noeud { 2 copy pop exch put_gparam_noeud end } def %% syntaxe : x y nodecommand rootnode /rootnode { 1 dict begin /noeud exch def noeud 3 1 roll put_coordonnees_noeud noeud end } def %% /emptynode {[ %% (cnode) %% type %% () %% contenu %% () %% nom %% 0 0 %% coordonnees %% {} %% type de liaison avec le precedent %% {} %% parametres graphiques %% {bctext} %% commande d'affichage %% true %% relie au precedent %% ]} def /emptynode {[ (cnode) %% type () %% contenu () %% nom 0 0 %% coordonnees {} %% type de liaison avec le precedent {} %% parametres graphiques {bctext} %% commande d'affichage true %% relie au precedent [] %% labels liaison [] %% affichage labels liaison [] %% option affichage labels liaison [] %% options affichage contenu ]} def %% /declare_noeud { %% 7 dict begin %% /noeud exch def %% /nom noeud get_name_noeud def %% /contenu noeud get_contenu_noeud def %% /mode noeud get_type_noeud def %% noeud get_coordonnees_noeud /A defpoint %% /gparametres {noeud get_gparam_noeud} def %% contenu A %% noeud get_affichage_noeud %% nom mode gparametres %% noeud %% end %% /precedent exch def %% gsave %% exec %% les parametres graphiques %% cvx exec %% declaration du noeud %% exec %% affichage du contenu %% grestore %% } def /declare_noeud { 7 dict begin gsave /noeud exch def /nom noeud get_name_noeud def /contenu noeud get_contenu_noeud def /mode noeud get_type_noeud def noeud get_coordonnees_noeud /A defpoint /gparametres {noeud get_gparam_noeud} def gparametres exec %% les parametres nom mode cvx exec %% declaration du noeud contenu A noeud get_optaffcontenu_array dup length 1 ge { cvx /options_picture exch def } { pop } ifelse noeud get_affichage_noeud exec %% affichage du contenu %% on transmet en dehors du dictionnaire local noeud grestore end /precedent exch def } def %% syntaxe : noeud get_coordonnees_noeud -> x y /get_coordonnees_noeud { dup 3 get exch 4 get } def %% syntaxe : noeud x y put_coordonnees_noeud /put_coordonnees_noeud { 2 dict begin /A defpoint /noeud exch def noeud 3 A pop put noeud 4 A exch pop put end } def %% syntaxe : noeud get_type_noeud -> string /get_type_noeud { 0 get } def %% syntaxe : noeud get_relie_noeud -> bool /get_relie_noeud { 8 get } def %% syntaxe : noeud put_relie_noeud /put_relie_noeud { 8 exch put } def %% syntaxe : noeud get_affichage_noeud -> proc /get_affichage_noeud { 7 get } def %% syntaxe : noeud proc put_affichage_noeud /put_affichage_noeud { 7 exch put } def %% syntaxe : noeud string put_type_noeud /put_type_noeud { 0 exch put } def %% syntaxe : noeud string put_contenu_noeud /put_contenu_noeud { 1 exch put } def %% syntaxe : noeud string put_name_noeud /put_name_noeud { 2 exch put } def %% syntaxe : noeud get_name_noeud -> string /get_name_noeud { 2 get } def %% syntaxe : noeud string put_gparam_noeud /put_gparam_noeud { 6 exch put } def %% syntaxe : noeud get_gparam_noeud -> string /get_gparam_noeud { 6 get } def %% syntaxe : noeud get_contenu_noeud -> string /get_contenu_noeud { 1 get } def /get_liaison_array { 9 get } def /put_liaison_array { 9 exch put } def /get_affliaison_array { 10 get } def /put_affliaison_array { 10 exch put } def /get_optaffliaison_array { 11 get } def /put_optaffliaison_array { 11 exch put } def /get_optaffcontenu_array { 12 get } def /put_optaffcontenu_array { 12 exch put } def %% syntaxe : array istreenode -> booleen, vrai si array ressemble a un %% treenode, faux sinon /istreenode { 1 dict begin dup xcheck { pop false } { /candidat exch def candidat isarray { candidat length 13 eq { candidat 8 get isbool } { false } ifelse } { false } ifelse } ifelse end } def /deltnode { 3 dict begin /i exch def /table exch def /j 0 def /tnodeno 0 def [ table length { table j get dup istreenode { tnodeno i eq {pop} if /tnodeno tnodeno 1 add store } if /j j 1 add store } repeat ] end } def /Toptaff { 1 dict begin /option exch def dup option put_optaffcontenu_array end } def %% 07/03/06 %% %% syntaxe : string/lit mode proc1 proc2 genericTnode -> cree un noeud d'arbre %% 07/03/06 %% /genericTnode { %% 07/03/06 %% 3 dict begin %% 07/03/06 %% /proctex exch def %% 07/03/06 %% /procstring exch def %% 07/03/06 %% /modestring exch def %% 07/03/06 %% %% y a-til un argument %% 07/03/06 %% dup xcheck { %% non %% 07/03/06 %% emptynode %% 07/03/06 %% dup modestring put_type_noeud %% 07/03/06 %% } { %% 07/03/06 %% %% faut voir => on recipere le lexeme precedent %% 07/03/06 %% dup /contenu exch def %% 07/03/06 %% %% phrase ou litteral => c'est un argument %% 07/03/06 %% contenu isstring contenu isname or { %% 07/03/06 %% pop %% 07/03/06 %% emptynode %% 07/03/06 %% dup contenu put_contenu_noeud %% 07/03/06 %% dup modestring put_type_noeud %% 07/03/06 %% contenu isstring { %% 07/03/06 %% dup procstring cvx put_affichage_noeud %% 07/03/06 %% } { %% 07/03/06 %% dup proctex cvx put_affichage_noeud %% 07/03/06 %% } ifelse %% 07/03/06 %% } {%% pas d'argument %% 07/03/06 %% emptynode %% 07/03/06 %% dup modestring put_type_noeud %% 07/03/06 %% } ifelse %% 07/03/06 %% } ifelse %% 07/03/06 %% end %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : string/lit Tc -> cree un noeud circulaire contenant %% 07/03/06 %% %% "string" ou le label TeX indique par lit %% 07/03/06 %% /Tc { %% 07/03/06 %% (cnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /Tcc { %% 07/03/06 %% (cnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /TC { %% 07/03/06 %% (Cnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /TCc { %% 07/03/06 %% (Cnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /Tr { %% 07/03/06 %% (node) (bctext) (3 -1 roll chargetexlabel bctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /Trc { %% 07/03/06 %% (node) (cctext) (3 -1 roll chargetexlabel cctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /TR { %% 07/03/06 %% (Rnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /TRc { %% 07/03/06 %% (Rnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /Tb { %% 07/03/06 %% (bnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /Tbc { %% 07/03/06 %% (bnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% noeud fantome %% 07/03/06 %% /Tf { %% 07/03/06 %% emptynode %% 07/03/06 %% dup (node) put_type_noeud %% 07/03/06 %% dup false put_relie_noeud %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /Tdia { %% 07/03/06 %% (dianode) (bctext) (3 -1 roll chargetexlabel bctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /Tdiac { %% 07/03/06 %% (dianode) (cctext) (3 -1 roll chargetexlabel cctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /Toval { %% 07/03/06 %% (ovalnode) (bctext) (3 -1 roll chargetexlabel bctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /Tovalc { %% 07/03/06 %% (ovalnode) (cctext) (3 -1 roll chargetexlabel cctexlabel) genericTnode %% 07/03/06 %% } def %% 07/03/06 %% setTimes %% 07/03/06 %% %% 07/03/06 %% /nomme_noeud { %% 07/03/06 %% 1 dict begin %% 07/03/06 %% /le_nom exch def %% 07/03/06 %% dup le_nom put_name_noeud %% 07/03/06 %% end %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /nodename { %% 07/03/06 %% nomme_noeud %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /non_relie { %% 07/03/06 %% dup false put_relie_noeud %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /param_noeud { %% 07/03/06 %% 2 copy pop exch put_gparam_noeud %% 07/03/06 %% end %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : x y nodecommand rootnode %% 07/03/06 %% /rootnode { %% 07/03/06 %% 1 dict begin %% 07/03/06 %% /noeud exch def %% 07/03/06 %% noeud 3 1 roll put_coordonnees_noeud %% 07/03/06 %% noeud %% 07/03/06 %% end %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% /emptynode {[ %% 07/03/06 %% %% (cnode) %% type %% 07/03/06 %% %% () %% contenu %% 07/03/06 %% %% () %% nom %% 07/03/06 %% %% 0 0 %% coordonnees %% 07/03/06 %% %% {} %% type de liaison avec le precedent %% 07/03/06 %% %% {} %% parametres graphiques %% 07/03/06 %% %% {bctext} %% commande d'affichage %% 07/03/06 %% %% true %% relie au precedent %% 07/03/06 %% %% ]} def %% 07/03/06 %% %% 07/03/06 %% /emptynode {[ %% 07/03/06 %% (cnode) %% type %% 07/03/06 %% () %% contenu %% 07/03/06 %% () %% nom %% 07/03/06 %% 0 0 %% coordonnees %% 07/03/06 %% {} %% type de liaison avec le precedent %% 07/03/06 %% {} %% parametres graphiques %% 07/03/06 %% {bctext} %% commande d'affichage %% 07/03/06 %% true %% relie au precedent %% 07/03/06 %% [] %% labels liaison %% 07/03/06 %% [] %% affichage labels liaison %% 07/03/06 %% [] %% option affichage labels liaison %% 07/03/06 %% ]} def %% 07/03/06 %% %% 07/03/06 %% %% /declare_noeud { %% 07/03/06 %% %% 7 dict begin %% 07/03/06 %% %% /noeud exch def %% 07/03/06 %% %% /nom noeud get_name_noeud def %% 07/03/06 %% %% /contenu noeud get_contenu_noeud def %% 07/03/06 %% %% /mode noeud get_type_noeud def %% 07/03/06 %% %% noeud get_coordonnees_noeud /A defpoint %% 07/03/06 %% %% /gparametres {noeud get_gparam_noeud} def %% 07/03/06 %% %% contenu A %% 07/03/06 %% %% noeud get_affichage_noeud %% 07/03/06 %% %% nom mode gparametres %% 07/03/06 %% %% noeud %% 07/03/06 %% %% end %% 07/03/06 %% %% /precedent exch def %% 07/03/06 %% %% gsave %% 07/03/06 %% %% exec %% les parametres graphiques %% 07/03/06 %% %% cvx exec %% declaration du noeud %% 07/03/06 %% %% exec %% affichage du contenu %% 07/03/06 %% %% grestore %% 07/03/06 %% %% } def %% 07/03/06 %% %% 07/03/06 %% /declare_noeud { %% 07/03/06 %% 7 dict begin %% 07/03/06 %% gsave %% 07/03/06 %% /noeud exch def %% 07/03/06 %% /nom noeud get_name_noeud def %% 07/03/06 %% /contenu noeud get_contenu_noeud def %% 07/03/06 %% /mode noeud get_type_noeud def %% 07/03/06 %% noeud get_coordonnees_noeud /A defpoint %% 07/03/06 %% /gparametres {noeud get_gparam_noeud} def %% 07/03/06 %% gparametres exec %% les parametres %% 07/03/06 %% nom mode cvx exec %% declaration du noeud %% 07/03/06 %% contenu A %% 07/03/06 %% noeud get_affichage_noeud %% 07/03/06 %% exec %% affichage du contenu %% 07/03/06 %% %% on transmet en dehors du dictionnaire local %% 07/03/06 %% noeud %% 07/03/06 %% grestore %% 07/03/06 %% end %% 07/03/06 %% /precedent exch def %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud get_coordonnees_noeud -> x y %% 07/03/06 %% /get_coordonnees_noeud { %% 07/03/06 %% dup 3 get %% 07/03/06 %% exch 4 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud x y put_coordonnees_noeud %% 07/03/06 %% /put_coordonnees_noeud { %% 07/03/06 %% 2 dict begin %% 07/03/06 %% /A defpoint %% 07/03/06 %% /noeud exch def %% 07/03/06 %% noeud 3 A pop put %% 07/03/06 %% noeud 4 A exch pop put %% 07/03/06 %% end %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud get_type_noeud -> string %% 07/03/06 %% /get_type_noeud { %% 07/03/06 %% 0 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud get_relie_noeud -> bool %% 07/03/06 %% /get_relie_noeud { %% 07/03/06 %% 8 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud put_relie_noeud %% 07/03/06 %% /put_relie_noeud { %% 07/03/06 %% 8 exch put %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud get_affichage_noeud -> proc %% 07/03/06 %% /get_affichage_noeud { %% 07/03/06 %% 7 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud proc put_affichage_noeud %% 07/03/06 %% /put_affichage_noeud { %% 07/03/06 %% 7 exch put %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud string put_type_noeud %% 07/03/06 %% /put_type_noeud { %% 07/03/06 %% 0 exch put %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud string put_contenu_noeud %% 07/03/06 %% /put_contenu_noeud { %% 07/03/06 %% 1 exch put %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud string put_name_noeud %% 07/03/06 %% /put_name_noeud { %% 07/03/06 %% 2 exch put %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud get_name_noeud -> string %% 07/03/06 %% /get_name_noeud { %% 07/03/06 %% 2 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud string put_gparam_noeud %% 07/03/06 %% /put_gparam_noeud { %% 07/03/06 %% 6 exch put %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud get_gparam_noeud -> string %% 07/03/06 %% /get_gparam_noeud { %% 07/03/06 %% 6 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : noeud get_contenu_noeud -> string %% 07/03/06 %% /get_contenu_noeud { %% 07/03/06 %% 1 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /get_liaison_array { %% 07/03/06 %% 9 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /put_liaison_array { %% 07/03/06 %% 9 exch put %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /get_affliaison_array { %% 07/03/06 %% 10 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /put_affliaison_array { %% 07/03/06 %% 10 exch put %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /get_optaffliaison_array { %% 07/03/06 %% 11 get %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /put_optaffliaison_array { %% 07/03/06 %% 11 exch put %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% %% %% syntaxe : array istreenode -> booleen, vrai si array ressemble a un %% 07/03/06 %% %% %% treenode, faux sinon %% 07/03/06 %% %% /istreenode { %% 07/03/06 %% %% 1 dict begin %% 07/03/06 %% %% dup xcheck { %% 07/03/06 %% %% pop false %% 07/03/06 %% %% } { %% 07/03/06 %% %% /candidat exch def %% 07/03/06 %% %% candidat isarray { %% 07/03/06 %% %% candidat length 9 eq { %% 07/03/06 %% %% candidat 8 get isbool %% 07/03/06 %% %% } { %% 07/03/06 %% %% false %% 07/03/06 %% %% } ifelse %% 07/03/06 %% %% } { %% 07/03/06 %% %% false %% 07/03/06 %% %% } ifelse %% 07/03/06 %% %% } ifelse %% 07/03/06 %% %% end %% 07/03/06 %% %% } def %% 07/03/06 %% %% 07/03/06 %% %% syntaxe : array istreenode -> booleen, vrai si array ressemble a un %% 07/03/06 %% %% treenode, faux sinon %% 07/03/06 %% /istreenode { %% 07/03/06 %% 1 dict begin %% 07/03/06 %% dup xcheck { %% 07/03/06 %% pop false %% 07/03/06 %% } { %% 07/03/06 %% /candidat exch def %% 07/03/06 %% candidat isarray { %% 07/03/06 %% candidat length 12 eq { %% 07/03/06 %% candidat 8 get isbool %% 07/03/06 %% } { %% 07/03/06 %% false %% 07/03/06 %% } ifelse %% 07/03/06 %% } { %% 07/03/06 %% false %% 07/03/06 %% } ifelse %% 07/03/06 %% } ifelse %% 07/03/06 %% end %% 07/03/06 %% } def %% 07/03/06 %% %% 07/03/06 %% /deltnode { %% 07/03/06 %% 3 dict begin %% 07/03/06 %% /i exch def %% 07/03/06 %% /table exch def %% 07/03/06 %% /j 0 def %% 07/03/06 %% /tnodeno 0 def %% 07/03/06 %% [ %% 07/03/06 %% table length { %% 07/03/06 %% table j get %% 07/03/06 %% dup istreenode { %% 07/03/06 %% tnodeno i eq {pop} if %% 07/03/06 %% /tnodeno tnodeno 1 add store %% 07/03/06 %% } if %% 07/03/06 %% /j j 1 add store %% 07/03/06 %% } repeat %% 07/03/06 %% ] %% 07/03/06 %% end %% 07/03/06 %% } def