odra.6 monitortext (terminaux mobiles, Szpakowicz 23-04-1980)
TERMINAUX MOBILES, SZPAKOWICZ 23-04-1980 SUPERVISEUR DE PROLOG********************************* VERSION DU 5 SEPT 74 DES COMMANDES SONT DISPONIBLES A L'UTILISATEUR ENT,SORT,SORM,SORC,STOP,SOP,AJOP,SYNTAXE, CES COMMANDES PEUVENT ETRE APPELEES A TOUT NIVEAU
* * * TERMINAUX MOBILES, SZPAKOWICZ 23-04-1980 . *C*****SUPERVISEUR DE PROLOG********************************* VERSION DU 5 SEPT 74 DES COMMANDES SONT DISPONIBLES A L'UTILISATEUR ENT,SORT,SORM,SORC,STOP,SOP,AJOP,SYNTAXE, CES COMMANDES PEUVENT ETRE APPELEES A TOUT NIVEAU *C**************************************************************. *C****************LECTURE DES CLAUSES************************** EXECUTION OU AJOUT PERMET DE LIRE DES CLAUSES DANS UNE BOUCLE SANS FIN DONT ON SORT PAR LA COMMANDE STOP SI LA FIN DE LA CLAUSE EST POINT LA CLAUSE EST AJOUTEE SI LA FIN EST ! LA CLAUSE EST EXECUTEE NON DETERM ON UTILISE LES PREDICATS DE PROLOGB - &COMMENT, &ECUNIT, &VAR LES UNITES $GUIL $STAR ET $BLANC SONT REMPLACEES PAR " * ET SPACE *C***********. +$JOB-$SCLOSE. +$SCLOSE-LUB(*C)-$CLOSE(*C)-IMPASSE. +$SCLOSE-$SCLOSE. ** $CLOSE COMMENCE SUR UN CAR NON BLANC FINIT SUR UN CAR(POINT OU !) ***. +$CLOSE($STAR)-/-LU(*C)-&COMMENT(*C). +$CLOSE(*C)-$CLAUSE(.(*PONC,*VAR),*C,*X)-/ -$EXEC(*PONC,*X). +$CLOSE(*C)-SORM("TEKST POMIJANY: ") -LUB(*C1)-ECRIT(*C1) -$FIN(*C1) -LIGNE. +$CLAUSE(*VAR,*C,*X)-$SIGNE(*C,*E,*F)-/-$SPRED(*VAR,*C,*X). +$CLAUSE(*VAR,*C,*X)-$REGLE(*VAR,*C,*X). +$EXEC(.,*X)-/-$NER2(*X)-AJOUTB(*X). +$EXEC(!,*X)-$EXECUT(*X). +$EXECUT(NIL)-/-LIGNE. +$EXECUT(.(-(/),*X))-/(-($EXEC(*PONC,*Y)))-$EXECUT(*X). +$EXECUT(.(-(*X),*Y))-/-*X-$EXECUT(*Y). +$EXECUT(.(+(*X),*Y)) +*X -$EXECUT(*Y). ** TRAITEMENT DES REGLES SUPERQ. +$REGLE(*VAR,%,.(+(*E),*V)) -/ -$NTERMINAL(*VAR,*C,.(*U,*Y)) -$NERS14(*U) -UNIV(*E,.(.(%,*U),.(*X0,.(*XN,*Y)))) -$GAUCHE(*C,*XN,*X0,*V,*VAR). +$REGLE(*VAR,#,*V) -/ -$ERF(15). +$REGLE(*VAR,',*V) -/ -$ERF(15). +$REGLE(*VAR,=,*V) -/ -$ERF(16). +$REGLE(*VAR,*C,*V) -$ERF(13). +$GAUCHE(#,.(*E,*XN),*X0,*V,*VAR) -/ -$BONTERME(*VAR,*C,*E) -$GAUCHE(*C,*XN,*X0,*V,*VAR). +$GAUCHE(=,*XN,*X0,*V,*VAR) -/ -LUB(*C0) -$NERS17(*C0) -LUB(*C1) -$DROITE(*C1,*X0,*XN,*V,*VAR). +$GAUCHE(%,*X0,*XN,*V,*VAR) -/ -$ERF(18). +$GAUCHE(',*X0,*XN,*V,*VAR) -/ -$ERF(19). +$GAUCHE(*C,*X0,*XN,*V,*VAR) -$SIGNE(*C,*E,*F) -/ -$ERF(23). +$GAUCHE(*C,*X0,*XN,*V,*VAR) -$ERF(20). +$DROITE(#,.(*E,*X0),*XN,*V,*VAR) -/ -$BONTERME(*VAR,*C,*E) -$DROITE(*C,*X0,*XN,*V,*VAR). +$DROITE(*C,*X0,*XN,*V,*VAR) -$DROITEBIS(*C,*X0,*XN,*V,*VAR). +$DROITEBIS(%,*X0,*XN,*V2,*VAR) -/ -$NTERMINAL(*VAR,*C,*E) -$TFP(.(*E,*X1),*X0,*V1,*V2) -$DROITE(*C,*X1,*XN,*V1,*VAR). +$DROITEBIS(',*X0,*XN,.(-($PORTE(*E,*X0,*X1)),*V),*VAR) -/ -$BONTERME(*VAR,*C,*E) -$DROITEBIS(*C,*X1,*XN,*V,*VAR). +$DROITEBIS(*C0,*X0,*XN,.(*F,*V),*VAR) -$SIGNE(*C0,*E,*F) -/ -$BONTERME(*VAR,*C1,*E) -$DROITEBIS(*C1,*X0,*XN,*V,*VAR). +$DROITEBIS(.,*X,*X,NIL,.(.,*D)) -/. +$DROITEBIS(#,*X0,*XN,.(-(*E),*V),*VAR) -/ -$TERMINAUX(*VAR,*C,*X1,*X) -UNIV(*E,.("%$VIDE",.(*X0,.(*X,NIL)))) -$DROITEBIS(*C,*X1,*XN,*V,*VAR). +$DROITEBIS(!,*X0,*XN,*V,*VAR) -/ -$ERF(21). +$DROITEBIS(*C,*X0,*XN,*V,*VAR) -$ERF(20). +$PORTE(*T,.(*T,*R),*R). +$PORTE(*T,.(*U,*R),.(*U,*S)) -$PORTE(*T,*R,*S). +$NTERMINAL(*VAR,*C2,.(*U,*Y)) -/ -LUB(*C0) -$LIRE(*C0,*U,*C1) -$NER22(*U) -$LISTP(*VAR,*C1,*C2,*Y). +$TERMINAUX(*VAR,*C,*X0,.(*E,*X)) -$BONTERME(*VAR,*C1,*E) -$TFINIR(*VAR,*C,*C1,*X0,*X). +$TFINIR(*VAR,*C,#,*X0,*X) -/ -$TERMINAUX(*VAR,*C,*X0,*X). +$TFINIR(*VAR,*C,*C,*X0,*X0). +$BONTERME(*VAR,*C2,*E) -LUB(*C0) -$LIRE(*C0,*U,*C1) -$PRED(*VAR,*U,*C1,*C2,*E). +$TFP(.(.("NT",.(*U,*Y)),*XN),*X0,*V, .(-(UNIV(*E,.(.(%,*U),.(*X0,.(*XN,*Y))))),.(-(*E),*V))) -/. +$TFP(.(.(*U,*Y),*XN),*X0,*V,.(-(*E),*V)) -UNIV(*E,.(.(%,*U),.(*X0,.(*XN,*Y)))). +$SIGNE(+,*E,+(*E)) -/. +$SIGNE(-,*E,-(*E)). * * * COMMANDE SYNTAXE * * *. +SYNTAXE(.(*NT,*T1),*T2) -UNIV(*NT,.(*U,*Y)) -UNIV(*E,.(.(%,*U),.(*T2,.(*T1,*Y)))) -*E. +$NERS14("NT") -/ -$ERF(14). +$NERS14(*U). +$NERS17(=) -/. +$NERS17(*C) -$ERF(17). +$NER22($STAR)-/-$ERF(22). +$NER22(*C). ** $SPRED COMMENCE SUR UN CAR NON BLANC FINIT SUR UN CAR(POINT OU !) *C****. +$SPRED(*VAR,+,.(+(*X),*Y)) -/ -LUB(*C)-$LIRE(*C,*U1,*C1) -$PRED(*VAR,*U1,*C1,*C2,*X)-$SPRED(*VAR,*C2,*Y). +$SPRED(*VAR,-,.(-(*X),*Y)) -/ -LUB(*C)-$LIRE(*C,*U1,*C1) -$PRED(*VAR,*U1,*C1,*C2,*X)-$SPRED(*VAR,*C2,*Y). +$SPRED(.(.,*VAR1),.,NIL)-/. +$SPRED(.(!,*VAR),!,NIL)-/. +$SPRED(*VAR,*C,NIL)-$ERF(3). **$PRED COMMENCE SUR UNE UNITE+CAR FINIT SUR UN CAR EN AVANT ***. +$PRED(.(*PONC,*VAR),.($STAR,NIL),*C,*C1,*X) -/ -$LIRE(*C,*U1,*C1) -$NER4(*U1) -&VAR(.(*U1,*X),*VAR). +$PRED(*VAR,*U,*C,*C1,*X)-$LISTP(*VAR,*C,*C1,*Y) -UNIV(*X,.(*U,*Y)). *C**********LECTURE DES EXPRESSIONS*********** *C**************************************. +ENT(*X)-LUB(*C)-$EXP(*VAR,1,*C,*DU,*QU,*X). ***$EXP COMMENCE SUR UN CAR LU FINIT SUR UNE UNITE+CAR EN AVANT ***. +$EXP(*VAR,*N,*C,*DU,*QU,*X) -$MAX(*N) -/ -$LIRE(*C,*U1,*C1) -$PRIMAIRE(*VAR,*U1,*C1,*DU,*QU,*X). +$EXP(*VAR,*N,*C,*DU,*QU,*X) -PLUS(1,*N,*M) -$EXP(*VAR,*M,*C,*DU1,*QU1,*X1) -$SEXP(*VAR,*N,*DU1,*QU1,*DU,*QU,*X1,*X). *** $SEXP COMMENCE SUR UNITE+CAR DEJA LU FINIT SUR UNITE+CAR EN AVANT ***. +$SEXP(*VAR,*N,.(*U1,*C1),.(*N,.(GD,.(*G1,*D1))),*DU,*QU,*X1,*X) -/ -$TESTOP(*G1,*X1) -PLUS(*N,1,*M) -$EXP(*VAR,*M,*C1,*DU2,*QU2,*X2) -$TESTOP(*D1,*X2) -$OPERER(*G1,*D1,*U1,*X1,*X2,*Y) -$SEXP(*VAR,*N,*DU2,*QU2,*DU,*QU,*Y,*X). +$SEXP(*VAR,*N,.(*U1,*C1),.(*N,.(DG,.(*G1,*D1))),*DU,*QU,*X1,*X) -/ -$TESTOP(*G1,*X1) -PLUS(*N,1,*M) -$EXP(*VAR,*M,*C1,*DU2,*QU2,*X2) -$SEXP(*VAR,*N,*DU2,*QU2,*DU,*QU,*X2,*Y) -$TESTOP(*D1,*Y) -$OPERER(*G1,*D1,*U1,*X1,*Y,*X). +$SEXP(*VAR,*N,*DU,*QU,*DU,*QU,*X,*X). *** $PRIMAIRE COMMENCE SUR UNITE+CAR DEJA LU FINIT SUR UNITE+CAR EN AVANT ***. +$PRIMAIRE(*VAR,.($GUIL,NIL),*C,.(*U1,*C1),*QU1,*X) -/ -$CHAINE(*C,*X) -LUB(*C2)-$LIRE(*C2,*U1,*C1)-$OP(*U1,*QU1) -$NER5(*QU1). +$PRIMAIRE(.(*PONC,*VAR),.($STAR,NIL),*C,.(*U1,*C1),*QU1,*X) -/ -$LIRE(*C,*U2,*C2) -$NER4(*U2) - &VAR(.(*U2,*X),*VAR) -$LIRE(*C2,*U1,*C1) -$OP(*U1,*QU1) -$NER5(*QU1). +$PRIMAIRE(*VAR,.((,NIL),*C,.(*U1,*C1),*QU1,*X) -/ -$EXP(*VAR,1,*C,.(*U2,*C2),*QU2,*X) -$NER6(*X)-$NER7(*U2) -LUB(*C3)-$LIRE(*C3,*U1,*C1)-$OP(*U1,*QU1) -$NER5(*QU1). +$PRIMAIRE(*VAR,*U,*C,*DU1,*QU1,*X)-$OP(*U,*QU) -$PRIM1(*VAR,.(*U,*C),*QU,*DU1,*QU1,*X). *C** $PRIM1 COMMENCE SUR UNE UNITE+CAR DEJA LU FINIT SUR UNITE +CAR EN AVANT *C****. +$PRIM1(*VAR,.(*U,*C),NIL,.(*U3,*C3),*QU3,*X)-/ -$LISTP(*VAR,*C,*C2,*Y) -$LIRE(*C2,*U3,*C3)-$OP(*U3,*QU3)-$NER5(*QU3) -UNIV(*X,.(*U,*Y)). +$PRIM1(*VAR,*DU,*QU,*DU,*QU,$NIL). *** $LISTP COMMENCE SUR UN CAR FINIT SUR UN CAR EN AVANT ***. +$LISTP(*VAR,(,*C2,.(*X1,*L))-/-LUB(*C) -$EXP(*VAR,1,*C,.(*U1,*C1),*QU1,*X1) -$NER6(*X1)-$LIST(*VAR,*C1,*L)-LUB(*C2). +$LISTP(*VAR,*C,*C,NIL). *** $LIST COMMENCE SUR UN CAR ) OU , FINIT SUR UN CAR EN AVANT ***. +$LIST(*VAR,,,.(*X1,*L))-/-LUB(*C) -$EXP(*VAR,1,*C,.(*U1,*C1),*QU1,*X1) -$NER6(*X1)-$LIST(*VAR,*C1,*L). +$LIST(*VAR,),NIL)-/. *** $LIRE LIT UNE UNITE COMMENCE AVEC UN CAR EN AVANT FINIT AVEC UN CAR DEJA LU(SAUF POUR LES UNITES ) ET , ) ET NON BLANC(SAUF POUR ") ***. +$LIRE(, ,.(,,NIL), ,)-/. +$LIRE() ,.(),NIL),))-/. +$LIRE($GUIL,.($GUIL,NIL),*C)-/-LU(*C). +$LIRE(*C,.(*C,NIL),*C1) -$NANU(*C)-/-LUB(*C1). +$LIRE(*C,.(*C,*L),*C1)-LU(*C2)-$SANU(*C2,*L,*C1). +$SANU($BLANC,NIL,*C1)-/-LUB(*C1). +$SANU(*C,NIL,*C)-$NANU(*C)-/. +$SANU(*C,.(*C,*L),*C1)-LU(*C2)-$SANU(*C2,*L,*C1). +$NANU($) -/ -IMPASSE. +$NANU(*C) +LETTRE(*C)+CHIFFRE(*C). *** $CHAINE LIT UNE SUITE DE CAR EN PEIGNE COMMENCE SUR UN CAR " FINIT SUR LE CAR " ***. +$CHAINE($GUIL,NIL)-/. +$CHAINE(*C,.(*C,*L))-LU(*C1)-$CHAINE(*C1,*L). ***$TESTOP DONNE UNE ERREUR DANS LES CAS A NON $NIL P $NIL ***. +$TESTOP(O,*X) -/. +$TESTOP(P,*X) -/ -$NER6(*X). +$TESTOP(A,*X) -$NER8(*X). *** $OPERER CREE LE TERME A PARTIR DE L UNITE U ET DES 2 ARGUMENTS. +$OPERER(P,P,*U,*X,*Y,*Z)-/-UNIV(*Z,.(*U,.(*X,.(*Y,NIL)))). +$OPERER(A,P,*U,*X,*Y,*Z)-/-UNIV(*Z,.(*U,.(*Y,NIL))). +$OPERER(P,A,*U,*X,*Y,*Z)-/-UNIV(*Z,.(*U,.(*X,NIL))). +$OPERER(*G,*D,*U,*X,*Y,*Z)-$NIL(*X)-/-UNIV(*Z,.(*U,.(*Y,NIL))). +$OPERER(*G,*D,*U,*X,*Y,*Z)-$NIL(*Y)-/-UNIV(*Z,.(*U,.(*X,NIL))). +$OPERER(*G,*D,*U,*X,*Y,*Z)-UNIV(*Z,.(*U,.(*X,.(*Y,NIL)))). +$NIL($VAR)-/-IMPASSE. +$NIL($NIL). ***TRAITEMENT DES ERREURS******. +$NER2(.(+($NIL),*Y))-/-$ERF(2). +$NER2(.(-($NIL),*Y))-/-$ERF(2). +$NER2(.(+(ENT(*X)),*Y))-/-$ERF(2). +$NER2(.(+(SORT(*X)),*Y))-/-$ERF(2). +$NER2(.(+(SORM(*X)),*Y))-/-$ERF(2). +$NER2(.(+(SORC(*X)),*Y))-/-$ERF(2). +$NER2(.(+(STOP),*X))-/-$ERF(2). +$NER2(.(+(AJOP(*X1,*X2,*X3)),*Y)) -/ -$ERF(2). +$NER2(.(+(SYNTAXE(*X1,*X2)),*Y)) -/ -$ERF(2). +$NER2(.(+(SOP),*Y))-/-$ERF(2). +$NER2(*X). +$NER4(.($GUIL,NIL))-/-$ERF(4). +$NER4(.(,,NIL))-/-$ERF(4). +$NER4(.((,NIL))-/-$ERF(4). +$NER4(.(),NIL))-/-$ERF(4). +$NER4(.($STAR,NIL))-/-$ERF(4). +$NER4(*U). +$NER5(NIL)-/-$ERF(5). +$NER5(*QU). +$NER6(*X)-$NIL(*X)-/-$ERF(6). +$NER6(*X). +$NER7(.(),NIL))-/. +$NER7(*U)-$ERF(7). +$NER8(*X)-$NIL(*X)-/. +$NER8(*X)-$ERF(8). +$ERF(*N) -LIGNE -SORM("** ** ** ") -$M(*N) -SORM(" ** ** **") -LIGNE -/ -IMPASSE. +$M(13) -SORM("WADLIWY POCZATEK KLAUZULI"). +$M( 3) -SORM("NIE ZIDENTYFIKOWANY OBIEKT W KLAUZULI"). * * * ERREURS PENDANT LA LECTURE * * * . +$M( 5) -SORM("SPODZIEWANO SIE OPERATORA, PRZECINKA LUB PRAWEGO NAWIASU"). +$M( 6) -SORM("SPODZIEWANO SIE OPERANDU"). +$M( 7) -SORM("SPODZIEWANO SIE PRAWEGO NAWIASU"). +$M( 8) -SORM("NIEPOTRZEBNY OPERAND"). * * * ERREURS PENDANT L'ECRITURE * * * . +$M( 9) -SORM("WADLIWA LICZBA LUB POZYCJA ARGUMENTOW"). * * * ERREURS DE AJOP * * * . +$M(10) -SORM("WADLIWY TYP OPERATORA W AJOP"). +$M(11) -SORM("NIEDODATNI PRIORYTET W AJOP"). +$M(12) -SORM("ZADEKLAROWANO WCZESNIEJ OPERATOR INNEGO TYPU ") -SORM("O TYM SAMYM PRIORYTECIE"). * * * ERREURS DES REGLES SUPERQ * * * . +$M(20) -SORM("NIE ZIDENTYFIKOWANY OBIEKT W REGULE"). +$M(23) -SORM("WARUNEK PO LEWEJ STRONIE REGULY"). +$M(18) -SORM("ZA DUZO NIETERMINALI PO LEWEJ STRONIE REGULY"). +$M(19) -SORM("RUCHOMY TERMINAL (') PO LEWEJ STRONIE REGULY"). +$M(14) -SORM("NT (NIETERMINAL ZMIENNY) PO LEWEJ STRONIE REGULY"). +$M(15) -SORM("TERMINAL NA POCZATKU REGULY?"). +$M(17) -SORM("BRAK == W REGULE"). +$M(16) -SORM("BRAK LEWEJ STRONY REGULY?"). +$M(22) -SORM("ZMIENNA JAKO NIETERMINAL W REGULE?"). +$M(21) -SORM("WYKRZYKNIK NA KONCU REGULY"). * * * PROTECTION DES NOMS QUELQUES-UNS * * * . +$M( 2) -SORM("PROBA REDEFINICJI PODPROGRAMU STANDARDOWEGO"). +$M( 4) -SORM("NAZWA ZASTRZEZONA"). +$M(1)-SORM("UWAGA: STOSOWANIE ZBYT WYSOKICH PRIORYTETOW MOZE SPOWODOWAC")-LIGNE -SORM(" PRZEPELNIENIE PAMIECI W CZASIE WCZYTYWANIA KLAUZUL.")-LIGNE. +$FIN(.)-/. +$FIN(!)-/. +$FIN(*C)-LUB(*C1)-ECRIT(*C1)-$FIN(*C1). +ERREUR(*X) -LIGNE -SORM("BLAD PODPROGRAMU OBLICZALNEGO: ") -SORT(*X) -LIGNE -IMPASSE. ***COMMANDE STOP*****. +STOP-/(-($SCLOSE))-IMPASSE. **COMMANDE OPERATEUR***. +AJOP(*U,*N,"'X")-/-$AJOP(*U,*N,DG,A,P). +AJOP(*U,*N,"X'")-/-$AJOP(*U,*N,GD,P,A). +AJOP(*U,*N,"X'(X'X)")-/-$AJOP(*U,*N,DG,P,P). +AJOP(*U,*N,"(X'X)'X")-/-$AJOP(*U,*N,GD,P,P). +AJOP(*U,*N,"X'(X'0)")-/-$AJOP(*U,*N,DG,P,O). +AJOP(*U,*N,"(0'X)'X")-/-$AJOP(*U,*N,GD,O,P). +AJOP(*U,*N,*L)-$ECOP(*U) -$ERF(10). +$AJOP(*U,*N,*S,*G,*D)-$NEROP2(*N,*U)-$CHSENS(*U,*N,*S) -$CHMAX(*N)-AJOUT(.(+($OP(*U,.(*N,.(*S,.(*G,*D))))), .(-(/),NIL))). +$NEROP2(*N,*U)-INF(*N,1)-/-$ECOP(*U)-$ERF(11). +$NEROP2(*N,*U) -INF(9,*N) -$AV -/. +$NEROP2(*N,*U). +$AV -$A. +$AV -AJOUT(.(+($A),NIL)) -$M(1). +$NEROP3(*S,*S,*U)-/. +$NEROP3(*S,*S1,*U)-$ECOP(*U)-$ERF(12). +$CHSENS(*U,*N,*S)-$OP(*U1,.(*N,.(*S1,*DOP)))-/-$NEROP3(*S,*S1,*U). +$CHSENS(*U,*N,*S). +$ECOP(*U)-SORM(*U)-SORM(" NIE UZNANO ZA OPERATOR"). *C*********SUPPRESSION DES OPERATEURS***************. +SOP-$OP(*U,*L)-$DELOP(*L)-SUPP(.(+($MAX(*N)),NIL)) -AJOUT(.(+($MAX(1)),NIL)). +$DELOP(.(0,*L))-/. +$DELOP(*L)-SUPP(.(+($OP(*U,*L)),*R))-$OP(*U1,*L1)-$DELOP(*L1). +$CHMAX(*P)-$MAX(*P1)-PLUS(*P,1,*Q)-INF(*P1,*Q)-/ -SUPP(.(+($MAX(*P1)),NIL)) -AJOUT(.(+($MAX(*Q)),NIL)). +$CHMAX(*P). *C***************COMMANDE ECRITURE DE TERME*************. +SORT(*X)-)EXP(.(1,*C),.(0,*N),.(0,GD),*X)-IMPASSE. +SORT(*X). +SORC(*X)-)SLITT(.(0,*N),*X)-IMPASSE. +SORC(*X). +SORM(*X) -&ECUNIT(*X) -IMPASSE. +SORM(*X). +)SLITT(*DN,NIL)-/-ECRIT(.). +)SLITT(.(*N,*N1),.(+(*X),*Y))-/-ECRIT(+)-)ATOME(.(*N,*N2),*X) -)SLITT(.(*N2,*N1),*Y). +)SLITT(.(*N,*N1),.(-(*X),*Y))-/-ECRIT(-)-)ATOME(.(*N,*N2),*X) -)SLITT(.(*N2,*N1),*Y). +)ATOME(.(*N,*N1),)VAR(*N))-/-PLUS(*N,1,*N1)-)VAR(1,*N). +)ATOME(.(*N,*N),)VAR(*N1))-/-)VAR(1,*N1). +)ATOME(*DN,*X)-UNIV(*X,*DU)-)FONCTION(.(1,*C),*DN,*DU). +)EXP(.(*C,0),.(*N,*N1),*DP,)VAR(*N))-/-PLUS(1,*N,*N1)-)VAR(*C,*N). +)EXP(.(*C,0),.(*N,*N),*DP,)VAR(*N1))-/-)VAR(1,*N1). +)EXP(*DC,*DN,*DP,*X)-UNIV(*X,.(*U,*L))-$OP(*U,*QU) -)EXP1(*DC,*DN,*DP,.(*U,*L),*QU). +)EXP1(*DC,*DN,*DP,*DU,NIL)-/-)FONCTION(*DC,*DN,*DU). +)EXP1(*DC,*DN,*DP,*DU,.(*P1,.(*S1,*DO1)))-)NONPAR(*DP,.(*P1,*S1)) -/-)EXPBIN(*DC,*DN,.(*P1,*DO1),*DU). +)EXP1(.(*C,1),*DN,*DP,*DU,.(*P1,.(*S1,*DO1)))-ECRIT(() -)EXPBIN(.(1,*C1),*DN,.(*P1,*DO1),*DU)-ECRIT()). +)EXPBIN(.(*C,*C3),.(*N,*N2),.(*P1,.(*G1,*D1)),.(*U,.(*X,.(*Y,NIL)))) -/-)NERP1(*G1)-)NERP1(*D1)-)EXP(.(*C,*C1),.(*N,*N1),.(*P1,GD) ,*X)-)UNITE(.(*C1,*C2),*U)-)EXP(.(*C2,*C3),.(*N1,*N2), .(*P1,DG),*Y). +)EXPBIN(.(*C ,*C2),*DN,.(*P1,.( P,*D1)),.(*U,.(*X,NIL)))-/-)NERP2(*D 1) -)EXP(.(*C,*C1),*DN,.(*P1,GD),*X)-)UNITE(.(*C1,*C2),*U). +)EXPBIN(.(*C,*C2),*DN,.(*P1,.(*G1,P)),.(*U,.(*X,NIL)))-/ -)NERP2(*G1) -)UNITE(.(*C,*C1),*U)-)EXP(.(*C1,*C2),*DN,.(*P1,DG),*X). +)EXPBIN(*DC,*DN,*QU,*DU)-$ERF(9). +)FONCTION(*DC,.(*N,*N),.(*U,NIL))-/-)UNITE(*DC,*U). +)FONCTION(.(*C,1),.(*N,*N2),.(*U,.(*X,*L)))-)UNITE(.(*C,*C1),*U) -ECRIT(()-)EXP(.(1,*C2),.(*N,*N1),.(0,GD),*X) -)LIST(.(*N1,*N2),*L)-ECRIT()). +)LIST(.(*N,*N2),.(*X,*L))-/-ECRIT(,)-)EXP(.(1,*C1),.(*N,*N1), .(0,GD),*X)-)LIST(.(*N1,*N2),*L). +)LIST(.(*N,*N),NIL). +)NONPAR(.(*P,*S),.(*P,*S))-/. +)NONPAR(.(*P,*S),.(*P1,*S1))-INF(*P,*P1). +)VAR(0,*N)-/-ECRIT($BLANC)-)VAR1(*N). +)VAR(1,*N)-/-)VAR1(*N). +)VAR1(*N)-ECRIT($STAR)-UNIV(*N,.(*U,NIL))-)UNITE(.(1,*C),.(X,*U)). +)UNITE(.(*C,1),.(*C1,NIL))-$NANU(*C1)-/-ECRIT(*C1). +)UNITE(.(0,0),*U)-/-ECRIT($BLANC)-SORM(*U). +)UNITE(.(1,0),*U)-SORM(*U). +)NERP1(A)-/-$ERF(9). +)NERP1(*X). +)NERP2(P)-/-$ERF(9). +)NERP2(*X). *C***INITIAL****. +$OP(.(,,NIL),.(0,.(GD,.(P,P))))-/. +$OP(.(),NIL),.(0,.(GD,.(P,P))))-/. +$OP(*U,NIL). +$MAX(1). +$FIN.