Personal tools
You are here: Home Projects Prolog Source code University of Warsaw ODRA Prolog interpreter distribution tape. Warsaw University, April 1983. odra.6 monitortext (terminaux mobiles, Szpakowicz 23-04-1980)
Document Actions

odra.6 monitortext (terminaux mobiles, Szpakowicz 23-04-1980)

by Paul McJones last modified 2019-05-20 16:52

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.

« July 2019 »
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: