IF DEBUG,X100,,X100
NMPROC: VAL " X" < NOM DU PROCESSEUR.
X100: VAL 0
IF DEBUG,,X100,
NMPROC: VAL " D" < NOM DU PROCESSEUR.
X100: VAL 0
IDP "SYNTAX - RELEASE 01/06/1979"
IDP "JOHN F. COLONNA"
EOT #SIP DEF PROCESSEUR#
PROG
WORD SYNTAX < ADRESSE DE LANCEMENT.
WORD 0 < POUR FAIRE $=$+1.
PSYNT: EQU $ < A NOTER : P='12 !!!!
LRP L
BR -2,L < ENTREE DANS LE PROCESSEUR.
EOT #SIP DEFINITION ITEM#
PAGE
<
<
< C O N S T A N T E S D U D I C T I O N N A I R E :
<
<
NCATG: VAL 32 < NBRE DE CATEGORIES GRAMMATICALES.
LMOT: VAL 40 < NBRE DE CARACTERES MAX D'UN MOT.
NCATG4: VAL NCATG+3/4 < NBRE D'OCTETS NECESSAIRES
< AUX CATEGORIES GRAMMATICALES.
NSEM: VAL 4 < NBRE D'OCTETS DE VALEUR
< SEMANTIQUE DU MOT.
<
<
< C O N S T A N T E S L E X I C O G R A P H I Q U E S :
<
<
LPHR: VAL 112 < NBRE DE CARACTERES MAX
< D'1NE PHRASE.
< (=LBUFESC DANS DCTESC...)
<
<
< F O R M A T D ' U N D E S C R I P T E U R
< D E M O T :
<
<
DESCI: VAL 0 < INDEX DU 1ER CARACTERE DU MOT
< DESCI=-1 EN FIN DE PHRASE.
DESCL: VAL 1 < LONGUEUR EN OCTETS DU MOT.
< CONTIENT LE NBRE DE MOTS
< RECONNUS EN FIN DE PHRASE.
DESCD: VAL 2 < NOM DU DICTIONNAIRE D'APPAR-
< TENANCE :
< 0 : LE MOT EST INCONNU ,
< ' ' : MOT USUEL CONNU ,
< <K1><K2> : MOT NON USUEL CONNU.
DESCS: VAL 3 < SEPARATEUR PRECEDENT LE MOT
< COURANT , CODE A L'AIDE D'UN
< 'SEPX' DANS L'OCTET1 ; L'OCTET0
< CONTIENT EVENTUELLEMENT UN
< INDICATEUR DE DEBUT DE GROUPE.
DESCF: VAL 4 < CATEGORIE GRAMMATICALE DU MOT
< DANS SON CONTEXTE DANS
< L'OCTET1 , ET DANS L'OCTET0 ,
< LE NIVEAU DE RECURSIVITE DU
< MOT COURANT.
DESCV: VAL 5 < VALEUR SEMANTIQUE DU MOT.
DESCC: VAL NSEM+1/2+DESCV < CATEGORIES GRAMMATICALES DU MOT.
LDESC: VAL NCATG4+3/4+DESCC < NBRE DE MOTS MACHINE NECESSAI-
< RES POUR MEMORISER LE DESCRIP-
< TEUR D'UN MOT FRANCAIS.
<
<
< C A T E G O R I E S L E X I C A L E S :
<
<
SEP1: VAL 4 < SEPARATEUR DU TYPE 'SPACE'.
SEP2: VAL 3 < SEPARATEURS DU TYPE ',',';',....
SEP3: VAL 2 < SEPARATEUR DU TYPE APOSTROPHE.
SEP4: VAL 1 < SEPARATEUR DU TYPE PARENTHESE.
FINF: VAL 0 < SEPARATEUR DE FIN DE PHRASE ,
< SOIT 'EOT' OU R/C.
CAR: VAL 8 < LIMITE ENTRE LES CARACTERES A
< VALEUR DE LETTRES ET LES
< SEPARATEURS.
LETR: VAL 8 < CARACTERES DE 'A' A 'Z'.
CHIF: VAL 9 < CARACTERES DE '0' A '9'.
CARS: VAL 'A < CARACTERES SPECIAUX : '-','+','*',...
IGNOR: VAL 'B < CARACTERES DE CODE NON
< RECONNUS.
PAGE
<
<
< F O R M A T D E L A G R A M M A I R E :
<
<
TYPE: VAL 0 < OCTET0=<TYPE> ,
< OCTET1=<ARGUMENT1>.
ARG2: VAL 1 < <ARGUMENT2>.
SUCCES: VAL 2 < EMPLACEMENT DU 1ER SUCCESSEUR
< DU NOEUD COURANT.
< LA FIN DE LISTE DE SUCCESSEURS
< EST INDIQUEE PAR UN MOT NUL.
<
<
< < T Y P E S > R E C O N N U S :
<
<
TACT: VAL 0 < NOEUD D'ACTION NON TERMINALE ;
< <ARGUMENT1> EST TRANSMIS PAR
< LE REGISTRE A A LA ROUTINE
< D'ADRESSE <ARGUMENT2>.
TACTER: VAL 1 < NOEUD D'ACTION TERMINALE ; MEMES
< CONVENTIONS QU'AVEC 'TACT'.
TVID: VAL 2 < NOEUD VIDE (MAIS NON TERMINAL).
TERM: VAL 3 < NOEUD TERMINAL ; <ARGUMENT2>
< CONTIENT LA CATEGORIE GRAMMA-
< TICALE RECHERCHEE POUR LE MOT
< COURANT DE LA PHRASE.
TNT: VAL 4 < NON-TERMINAL SYNTAXIQUE , AVEC
< ACTION EVENTUELLE SUR L'AVANT
< DERNIER DESCF.
TMOT: VAL 5 < NOEUD TERMINAL DE TEST DE
< PRESENCE D'UN MOT DONNE DONT
< <ARGUMENT1> EST LA LONGUEUR ,
< ET <ARGUMENT2> UN RELAI INDEXE
< VERS LUI.
< DE PLUS <ARGUMENT1> PEUT CONTE-
< NIR DANS LES BITS 8-11 UN
< INDICATEUR DISCRIMINANAT LES
< PRONOMS RELATIFS QUI/QUE/...
TFIN: VAL 6 < NOEUD VIDE TERMINAL (C'EST
< UN NOEUD DE FIN DE SUCCESSION
< LINEAIRE).
TFPH: VAL 7 < TEST DE FIN DE PHRASE.
TNFPH: VAL 8 < TEST DE NON-FIN DE PHRASE.
TSEP: VAL 9 < TEST DE SEPARATEUR.
< <ARGUMENT2> CONTIENT LA
< LE SEPARATEUR RECHERCHE SOUS
< FORME DE SEPX.
TNSEP: VAL 10 < TEST DE NON-SEPARATEUR.
< <ARGUMENT2> CONTIENT LA
< LE SEPARATEUR RECHERCHE SOUS
< FORME DE SEPX.
TNTC: VAL 11 < NON-TERMINAL SYNTAXIQUE AVEC
< ACTION EVENTUELLE SUR LE
< DESCF COURANT.
<
<
< FORMAT :
< LA GRAMMAIRE DU FRANCAIS EST DECRITE
< A 6HAIDE D'UN CERTAINS NBRE DE NOEUDS
< SYNTAXIQUES DONT LES TYPES SONT
< DEFINIS CI-DESSUS.
< LES <SUCCESSEURS> REPRESENTENT LES
< ALTERNATIVES POSSIBLES POUVANT SUIVRE
< UN NOEUD COURANT.
< ON PARCOURS LA GRAMMAIRE DANS LE SENS
< 'CROISSANT' JUSQU'A RENCONTRER
< SOIT UN NOEUD TERMINAL , SOIT UNE CONDITION
< NON REMPLIE (ET CONTENUE DANS LE
< REGISTRE B . LORS DES RETOURS ARRIERE
< EN ERREUR , ON ESSAYE TOUS LES SUCCESSEURS
< NON ENCORE TENTES . LA FIN DE LISTE DE
< SUCCESSEURS EST UN CAS D'ERREUR.
<
<
< C A T E G O R I E S G R A M M A T I C A L E S :
<
<
NOM: VAL 1 < NOM.
VERBE: VAL 2 < VERBE.
ADJECT: VAL 3 < ADJECTIF.
ADVERB: VAL 4 < ADVERBE.
PROPER: VAL 5 < PRONOM PERSONNEL.
PRODEM: VAL 6 < PRONOM DEMONSTRATIF.
INTERJ: VAL 7 < INTERJECTION,'OUI','NON'.
PREPOS: VAL 8 < PREPOSITION.
CONJ: VAL 9 < CONJONCTION.
ARTICL: VAL 10 < ARTICLE.
PROREL: VAL 11 < PRONOM RELATIF.
<
<
< G R O U P E S S Y N T A G M A T I Q U E S :
<
<
PHRASE: VAL NCATG+1 < PHRASE.
TGV: VAL NCATG+2 < GROUPE VERBAL.
TGN: VAL NCATG+3 < GROUPE NOMINAL.
TREL: VAL NCATG+4 < PROPOSITION RELATIVE.
TINT: VAL NCATG+5 < INTERJECTION.
TCONJ: VAL NCATG+6 < CONJONCTION DE COORDINATION.
<
<
< D I S C R I M I N A N T S :
<
<
TQUI: VAL '80 < DISCRIMINANT DE 'QUI'.
TQUE: VAL '90 < DISCRIMINANT DE 'QUE'.
<
<
< R E C U R S I V I T E D U D I S C O U R S :
<
<
BOR: VAL 'FF < 'BEGIN RECURISIVITE' ; ELLE
< SE FAIT EN GENERAL SUR LES
< 'QUE' , 'QUI' ,....
EOR: VAL 1 < 'END RECURSIVITE' ; ELLE SE
< FAIT SUR LES FINS D'AXIOMES 2
< ET LES FINS D'AXIOMES 3.
FRONT: VAL '80 < FRONTIERE DE PROPOSITION A
< NIVEAU DE RECURSIVITE CONSTANT.
<
< D E S C R I P T E U R
< D E P R O P O S I T I O N R E L A T I V E :
<
< FORMAT :
< CHAQUE ENTREE EST BOUBLE-MOT :
< -MOT0=@@1ER DESCRIPTEUR-MOT DE CETTE PARTIE
< DE PROPOSITION ,
< -OCTET2=INDICATEUR DE DEBUT DE GROUPE ,
< -OCTET3=NBRE DE MOTS CONTENUS DANS LE GROUPE ,
< DISCRIMINANT DE QUI/QUE/....
<
< FORMAT GLOBAL :
< <RELAI-DESCRIPTEUR-PROPOSITION> ,
< <SUJET>(<OPERATEUR>/'0(<OBJET>/'0))(<PRO.REL>/'0) ,
< '0000.
<
ALPHA: VAL 0 < 1ERE PARTIE DE LA PROPOSITION.
QUIQUE: VAL 2 < PRONOM RELATIF DE LA PROPOSITION.
GVREL: VAL 4 < GROUPE VERBAL DE LA PROPOSITION.
BETA: VAL 6 < DERNIERE PARTIE DE LA PROPOSITION.
LREL: VAL 10 < LONGUEU D'UN DESCRIPTEUR DE
< PROPOSITION RELATIVE ; ON
< TROUVE DANS LE MOT0 , UN RELAI
< VERS LE DESCRIPTEUR REEL DE
< LA PROPOSITION , DANS LES 8
< MOTS SUIVANTS , CE QUI EST DECRIT
< CI-DESSUS , ET DANS LE DERNIER
< MOT UN CODE D'ARRET ('0).
SUJET: VAL 0 < <SUJET> ,
OPERA: VAL 2 < <OPERATEUR> ,
OBJET: VAL 4 < <OBJET>.
PAGE
<
<
< M E M O I R E L I B R E :
<
<
FREE: VAL '1000 < ADRESSE DU 1ER MOT LIBRE
< DES 2 DERNIERS K DE LA MEMOIRE.
<
<
< L O C A L :
<
<
LOCAL
LOC: EQU $
<
< M E S S A G E S :
<
IF DEBUG,,X100,
MERR: BYTE 7;'6D
ASCI "ERREUR"
MCOR: BYTE 8;'6D
ASCI "CORRECT "
MNPRO: BYTE 15;'6D
ASCI "0 PROPOSITIONS"
MPRO: BYTE 5;'6D
BYTE '80;"*"
ASCI " "
MRCLF: BYTE 1;'6D
MSP: BYTE 1;" "
MREC: BYTE 5;'6D
ASCI "<R> "
MMOT: BYTE 5;'6D
BYTE '81;">"
ASCI " "
MSEM: BYTE 3;" ";"/";" "
MNOM: BYTE 4;"="
ASCI "NOM "
MVERB: BYTE 6;"="
ASCI "VERBE "
MADJ: BYTE 9;"="
ASCI "ADJECTIF"
MADV: BYTE 8;"="
ASCI "ADVERBE "
MPP: BYTE 8;"="
ASCI "PRO.PER "
MPD: BYTE 8;"="
ASCI "PRO.DEM "
MINJ: BYTE 7;"="
ASCI "INTERJ"
MPREP: BYTE 12;"="
ASCI "PREPOSITION "
MCONJ: BYTE 12;"="
ASCI "CONJONCTION "
MART: BYTE 8;"="
ASCI "ARTICLE "
MPREL: BYTE 8;"="
ASCI "PRO.REL "
X100: VAL 0
<
< R E L A I D E T A B L E S :
<
< PHRASE A ANALYSER :
<
PHR: VAL FREE < ZONE CONTENANT LA PHRASE
< A ANALYSER.
APHR: WORD PHR+'8000 < RELAI INDEXE VERS LA
< PHRASE A ANALYSER.
FREE: VAL LPHR/2+FREE+1 < PROGRESSION DE LA ZONE LIBRE.
< (+1 A CAUSE DE L'EOT QUE L'ON
< AJOUTE SYSTEMATIQUEMENT EN
< BOUT DE ZONE 'PHR').
<
< ZONE DES ARGUMENTS :
<
LDUM: VAL 32 < LONGUEUR DE LA ZONE ARGUMENTS.
DUMY: VAL FREE < ZONE DE TRANSMISSION DES
< ARGUMENTS SYNTAXE-->SEMANTIQUE.
PROP1: VAL 0 < NUMERO DU MOT DE LA ZONE
< DUMY CONTENANT L'ADRESSE REELLE
< DU 1ER MOT DE LA ZONE 'PROPOS'.
PROPP: VAL 1 < RELAI D'ACCES A LA PROPOSITION
< PRINCIPALE (ET AUX PROPOSITIONS
< RELATIVES PAR INCREMENTATIONS
< SUCCESSIVES DE +1).
NPROP: VAL 2 < NBRE DE PROPOSITIONS RECONNUES.
CONDRT: VAL 3 < CONDITIONS DE RETOUR DE
< L'ANALYSE SYNTAXIQUE.
FREE: VAL FREE+LDUM
ADUMY: WORD DUMY+'8000 < RELAI INDEXE VERS LA ZONE DUMY.
<
< ZONE DES DESCRIPTEURS ET DES PROPOSITIONS :
<
DPHR: VAL FREE < ZONE DE DESCRIPTION LEXICO-
< GRAPHIQUE DE LA PHRASE 'PHR'.
FREE: VAL LDESC*LPHR/2+FREE
< PROGRESSION DE LA ZONE LIBRE.
ADPHR: WORD DPHR < ADRESSE DU 1ER DESCRIPTEUR
< LEXICOGRAPHIQUE.
<
< A T T E N T I O N :
< EN FAIT LA ZONE 'PROPOS' EST
< EN RECOUVREMENT AVEC LA ZONE
< 'DPHR' , ET LE 1ER MOT DE 'DUMY'
< DONNE L'ADRESSE REELLE DE
< LA ZONE 'PROPOS' ..
<
PROPOS: VAL FREE < ZONE DE DESCRIPTION DES
< PROPOSITIONS CONTENUES DANS LA
< PHRASE ANALYSEE.
FREE: VAL LPHR/2+FREE
APROPO: WORD PROPOS < ADRESSE DU RELAI DU 1ER MOT
< DE LA 1ERE PROPOSITION.
APR: WORD PROPOS < ADRESSE DU DESCRIPTEUR DU MOT
< COURANT DE LA PROPOSITION
< COURANTE.
<
< RELAIS COURANTS :
<
AI2H: WORD ZERO+PILE-LTNI-LTNI
< @DE L'EN-TETE DE L'ITEM2.
AI2: WORD ZERO+PILE-LTNI-LTNI+LTN,X
< RELAI INDEXE VERS LE CORPS
< DE L'ITEM2.
ASEXEC: WORD TSEXEC,X < RELAI VERS LA TABLE DE TRAITE-
< MENT DES TYPES DES NOEUDS DE
< LA GRAMMAIRE.
TSEXEC: EQU $
WORD ACTNT < ACTION NON TERMINALE.
WORD ACTER < ACTION TERMINALE.
WORD VIDE < NOEUD VIDE NON TERMINAL.
WORD TERMIN < TERMINAL.
WORD NTERM < NON-TERMINAL SYNTAXIQUE AVEC
< ACTION EVENTUELLE SUR L'AVANT
< DERNIER DESCF.
WORD MOTP < TEST MOT PRECISE.
WORD FIN < NOEUD VIDE TERMINAL.
WORD FINPH < TEST DE FIN DE PHRASE.
WORD FINNPH < TEST DE NON-FIN DE PHRASE.
WORD RTSEP < TEST DE SEPARATEUR.
WORD RTNSEP < TEST DE NON-SEPARATEUR.
WORD NTERMC < NON-TERMINAL SYNTAXIQUE AVEC
< ACTION EVENTUELLE SUR LE
< DESCF COURANT.
TYPMAX: VAL $-TSEXEC < 1ER TPE INEXISTANT.
CG1: VAL 1 < 1ERE CATEGORIE GRAMMATICALE.
IF DEBUG,,X100,
TNOM: EQU $-CG1 < TABLE DES ADRESSES DES NOMS DES
< CATEGORIES GRAMMATICALES.
WORD MNOM
WORD MVERB
WORD MADJ
WORD MADV
WORD MPP
WORD MPD
WORD MINJ
WORD MPREP
WORD MCONJ
WORD MART
WORD MPREL
NCG: VAL $-TNOM-CG1 < NBRE DE CATEGORIES GRAMMATICALES.
ANOM: WORD TNOM,X < RELAI VERS LA TABLE DES NOMS
< DES CATEGORIES GRAMMATICALES.
X100: VAL 0
<
< D E M A N D E S A C M S 4 :
<
DEMOUT: WORD '0202 < SORTIE MESSAGE.
WORD 0 < @OCTET DU MESSAGE.
WORD 0 < LONGUEUR OCTET DU MESSAGE.
DEMIT: WORD '0602 < CHARGEMENT DES PAGES DU
< DICTIONNAIRE DANS L'ITEM2.
WORD PILE-LTNI-LTNI*2
WORD 2*LTNI
WORD -1
DEMSGN: WORD '0402 < DEMANDE DE CHARGEMENT DES
< OVERLAYS INITIALISEE EN
< GENERATION DU PROCESSEUR.
WORD BRANCH-ZERO*2
WORD ZERO-BRANCH+PILE-LTNI-LTNI*2
WORD -1
DEMCCI: WORD '0001 < APPEL DU CCI.
<
< P I L E D E L ' A N A L Y S E U R :
<
PILE: VAL FREE+1
APILE: WORD PILE-1 < POUR INITIALISER LE REGISTRE
< K DANS LA ZONE LIBRE.
<
< A D R E S S E D E S R O U T I N E S :
<
APRINT: WORD PRINT < EMISSION DES MESSAGES.
AOVL: WORD OVL < CHARGEMENT DES OVERLAYS.
GOBACK: WORD E371 < PASSAGE A L'OVERLAY SUIVANT.
ANOEUD: WORD NOEUD < ROUTINE PRINCIPALE ET RECURSIVE
< D'ANALYSE SYNTAXIQUE.
AEXPRO: WORD EXPRO < ROUTINE RECURSIVE D'EXTRACTION
< DES PROPOSITIONS CONTENUES
< DANS LA PHRASE ANALYSEE.
ASTACK: WORD STACK < STACKAGE MOT D'UNE PROPOSITION.
AREC: WORD REC < REECRITURE DES PROPOSITIONS
< RELATIVES.
IF DEBUG,,X100,
APMOT: WORD PMOT < EDITION DU MOT COURANT.
X100: VAL 0
<
< C O N S T A N T E S :
<
NGE: ASCI "GE" < NOM DE L'OVERLAY 'GE'.
NSEMA: ASCI " C" < NOM DE L'OVERLAY D'ANALYSE
< SEMANTIQUE.
NDIC: ASCI ": 3" < NOM DE LA PAGE DES MOTS USUELS.
BYTE '40;"0"
BYTE '04;"T"
PAGE
<
<
< E M I S S I O N D ' U N M E S S A G E :
<
<
< ARGUMENT :
< A=@MOT DHUN MESSAGE A EMETTRE ,
< DONT LE 1ER OCTET CONTIENT LA
< LONGUEUR.
<
<
PROG
PRINT: EQU $
PSR C < SAVE LA BASE C.
LR A,C < C=@MOT DU MESSAGE.
ADR A,A
ADRI 1,A < A=@OCTET DU MESSAGE.
STA DEMOUT+1 < QUE L'ON MET DANS DEMOUT.
LBY 0,C < RECUPERATION DE LA LONGUEUR.
STA DEMOUT+2 < QUE L'ON MET DANS DEMOUT.
LAD DEMOUT
SVC 0 < ENVOI DU MESSAGE A CMS4.
PLR C < RESTAURE LA BASE C.
RSR
PAGE
IF DEBUG,,X100,
<
<
< E D I T I O N D U M O T C O U R A N T :
<
<
< ARGUMENT :
< C=ADRESSE DU DESCRIPTEUR DU MOT COURANT.
<
<
PMOT: EQU $
LA DESCI,C < A=INDEX DU 1ER CARACTERE
< DU MOT COURANT.
SBT 2 < A=@OCTET DU MOT COURANT.
STA DEMOUT+1 < QUE L'ON MET DANS DEMOUT.
LA DESCL,C < A=LONGUEUR DU MOT COURANT.
STA DEMOUT+2 < QUE L'ON MET DANS DEMOUT.
LAD DEMOUT
SVC 0 < EDITION DU MOT COURANT.
RSR
X100: VAL 0
PAGE
<
<
< E X T R A C T I O N D E S P R O P O S I T I O N S :
<
<
< FONCTION :
< CETTE ROUTINE RECURSIVE EXTRAIT LES
< PROPOSITIONS CONTENUES DANS LA
< PHRASE QUE L'ON ANALYSE ; LA DERNIERE
< PROPOSITION EXTRAITE EST LA PROPOSITION
< PRINCIPALE.
<
<
FINPRO: VAL 0 < INDICATEUR DE FIN DE LISTE DES
< MOTS D'UNE PROPOSITION.
FINPHR: VAL -1 < INDICATEUR DE FIN DE PHRASE.
<
<
< NOTA :
< D1 , D2 ,... DESIGNANT LES
< ADRESSES DES DESCRIPTEURS DE MOTS ,
< LE RESULTAT DE CETTE ROUTINE EST UNE
< LISTE IMPLEMENTEE EN 'PROPOS' ,
< ET DONT LE FORMAT EST LE SUIVANT :
< (ET N1 , N2 ,.. LES NIVEAUX RECURSIFIS
< DES PROPOSITIONS)
<
< N1 DN...DK <FINPRO> N2 DI...DJ <FINPRO>....<FINPRO><FINFRA>.
<
<
< UTILISATION DES REGISTRES :
< B=NIVEAU RECURSIF COURANT ,
< Y=ADRESSE DU 1ER DESCRIPTEUR DU NIVEAU (B).
<
<
EXPRO: EQU $
CPZ DESCI,C < EST-CE LA FIN DE PHRASE ???
JL E351 < OUI , ON FAIT COMME SI ON
< DESCENDAIT UN NIVEAU RECURSIF.
LBY DESCF,C < SINON , ACCES AU NIVEAU DE
< RECURSIVITE DU MOT COURANT.
CPR A,B < EST-IL AU NIVEAU COURANT ???
JG E351 < (B)>(A) : ON DESCEND DE
< NIVEAU RECURSIF.
JL E352 < (B)<(A) : ON MONTE DE NIVEAU
< DE RECURSIVITE.
<
< DEPLACEMENT A NIVEAU RECURSIF CONSTANT :
<
ADRI LDESC,C < PROGRESSION DANS LA PHRASE.
JMP EXPRO < VERS LE MOT SUIVANT ...
<
< DEPLACEMENT ASCENTIONNELLE RECURSIF :
<
E352: EQU $
PSR A,B,Y,C < SAVE LE DESCF DU MOT COURANT , ET
< SAVE B=NIVEAU COURANT DE RECUR-
< SIVITE ,
< ET Y=ADRESSE DU 1ER DESCRIPTEUR
< DU NIVEAU (B).
< ET C=ADRESSE DU 1ER DESCRIPTEUR
< DE NIVEAU (B)+1.
ANDI FRONT-1 < SUPPRESSION DE LA FRONTIERE
< EVENTUELLE.
STBY DESCF,C < LE MOT COURANT PERD PROVI-
< SOIREMENT SON CARACTERE DE
< FRONTIERE ...
< (EVENTUELLEMENT !!!)
LR A,B < CHANGEMENT DE NIVEAU RECURSIF.
LR C,Y < CHANGEMENT DU DEBUT DU NIVEAU.
BSR AEXPRO < APPEL RECURSIF DE EXPRO.
<
< RETOUR POUR DESCENTE DE NIVEAU :
<
PLR A,B,Y,W < RESTAURATION DU NIVEAU DE
< RECURSIVITE ET DE L'ADRESSE
< DU 1ER DESCRIPTEUR DU NIVEAU.
< ET W=ADRESSE DU 1ER DESCRIPTEUR
< DE NIVEAU (B)+1.
STBY DESCF,W < LE MOT COURANT RETOUVE EVENTUEL-
< LEMENT SON CARACTERE DE MOT
< FRONTIERE ...
ANDI FRONT-1 < A=NIVEAU DE RECURSIVITE DU MOT
< COURANT QUE L'ON ATTRIBUE A
< LA PROPOSITION COURANTE.
BSR ASTACK < STACKAGE DU NIVEAU DE RECUR-
< SIVITE DE LA PROPOSITION.
XR Y,C < C POINTE LE 1ER DESCRIPTEUR
< DU NIVEAU , ET Y POINTE LE 1ER
< DESCRIPTEUR SUR LE QUEL IL
< FAUT ARRETER L'EDITION.
<
< RECHERCHE D'UN <GN> PRECEDANT IMMEDIATEMENT :
<
LR W,C < C POINTE LE 1ER DESCRIPTEUR
< DU NIVEAU SUPERIEUR.
E357: EQU $
LBY DESCF,C
CPI FRONT
JGE E860 < ON EST A UNE FRONTIERE.
CPR A,B < SI ON N'EST PAS AU NIVEAU 0 ,
< EST-ON AU NIVEAU COURANT ???
JNE E861 < NON , ON CONTINUE A RECULER
< A PRIORI.
E860: EQU $
LBY DESCS,C < ACCES A L'EVENTUEL INDICATEUR
< DE DEBUT DE GROUPE.
CPI TINT < EST-CE UNE INTERJECTION ???
JE E358 < OUI , ON L'EDITE ...
CPI TGN < EST-CE UN DEBUT DE <GN> ???
JE E370 < OUI , ON VA LE MEMORISER.
< SUR LE DEBUT DU <GN>.
E861: EQU $
LR C,A < POUR VALIDATION DE LA BASE C.
CP ADPHR < EST-ON SUR LE 1ER DESCRIPTEUR
< DE LA PHRASE ???
JE E370 < OK , ON EST AU DEBUT DE PHRASE.
ADRI -LDESC,C < SINON , RETOUR ARRIERE DANS
< LA PHRASE.
JMP E357
<
< MEMORISATION DU NIVEAU DE RECURSIVITE DE LA PROPOSITION :
<
E370: EQU $
E358: EQU $
LBY DESCF,C
CPI FRONT+1 < ON FAIT MONTER LE CARY SI
< (A)<FRONT+1 , SOIT SI :
< (A)<=FRONT.
ADCR B < ON FAIT +1 SUR LE NIVEAU DE
< RECURSIVITE SI ON N'EST
< PAS A UNE FRONTIERE , OU SI ON
< EST AU NIVEAU 0.
ADRI -1,B < RESTAURE B TEL QU'IL DOIT ETRE ....
ANDI FRONT-1 < A=NIVEAU DE RECURSIVITE DU MOT.
JMP E872 < VERS LA RECUPERATION ...
<
< BOUCLE DE RECUPERATION D'UNE PROPOSITION :
<
E353: EQU $
CPZ DESCI,C < TEST DE FIN DE PHRASE ???
JL E351 < OUI , ON FAIT COMME SI ON TROUVAIT
< UNE DESCENTE DE NIVEAU.
LBY DESCF,C < ACCES AU NIVEAU DU MOT COURANT.
CPI FRONT < EST-CE UN MOT FRONTIERE ???
JGE E870 < OUI , ON ARRETE LA RECUPERATION.
E872: EQU $
SBR B,A < CALCUL DE LA DISTANCE DU NIVEAU
< DU MOT COURANT AU NIVEAU
< COURANT.
CPI 1
JG E355 < LE MOT EST IGNORE : SEULS LES
< MOTS DE MEME NIVEAU , OU DU
< NIVEAU SUPERIEUR SONT
< EMPILES ....
<
< EMPILEMENT DU MOT COURANT DE LA PROPOSITION COURANTE :
<
LR C,A < A=@DESCRIPTEUR DU MOT COURANT.
BSR ASTACK < EMPILEMENT DU MOT COURANT.
E355: EQU $
ADRI LDESC,C < PROGRESSION DANS LA PHRASE
< COURANTE.
CPR Y,C < TEST DE FIN DE PROPOSITION.
JNE E353 < NON , ON CONTINUE ....
<
< FIN DE LA PROPOSITION COURANTE :
<
E871: EQU $
LAI FINPRO < A=<FINPRO>.
BSR ASTACK < EMPILEMENT DE <FINPRO>.
JMP EXPRO < EN CAS DE FIN DE PROPOSITION ,
< ON PASSE AU MOT LA SUIVANT.
<
< CAS DE LA RENCONTRE D'UN MOT FRONTIERE :
<
E870: EQU $
LR Y,C < ON SAUTE LE MOT FRONTIERE ,
< AINSI QUE QUE TOUX CEUX QUI
< LE SUIVENT.
JMP E871 < VERS LA FIN DE PROPOSITION.
<
< DEPLACEMENT PAR DESCENTE RECURSIVE :
<
E351: EQU $
RSR < ON FAIT UN RETOUR POUR EDITER
< LA PROPOSITION QUE L'ON VIENT
< D'ISOLER.
<
<
< E M P I L E M E N T M O T
< D ' U N E P R O P O S I T I O N :
<
<
< FONCTION :
< CETTE ROUTINE EMPILE L'ARGUMENT
< (A) DANS LA PILE 'PROPOS' , ET
< FAIT PROGRESSER LE POINTEUR DE
< PILE 'APR'.
<
<
< ARGUMENT :
< A=@DESCRIPTEUR DE MOT , OU
< =<FINPRO> , OU
< =<FINPHR>.
<
<
STACK: EQU $
STA &APR < EMPILEMENT DE L'ARGUMENT.
IC APR < PROGRESSION DU POINTEUR DE PILE.
RSR
PAGE
<
<
< G R O U P E S Y N T A G M A T I Q U E :
<
<
< FONCTION :
< MEMORISER DANS LE DESCS DU MOT
< COURANT POUR 'TYPGR' , ET DANS LE
< DESCS DU MOT PRECEDENT POUR 'TYPGRP'
< UN INDICATEUR DE DEBUT DE GROUPE
< SYNTAGMATIQUE.
<
<
< ARGUMENT :
< A=<ARGUMENT1>=TYPE DU GROUPE.
<
<
TYPGR: EQU $
STBY DESCS,C
RSR < AIN'T IT HARD ????
TYPGRP: EQU $
STBY DESCS-LDESC,C
RSR < MEME REMARQUE ...
<
<
< A N N U L A T I O N I N D I C A T E U R :
<
<
< FONCTION :
< ANNULE LES EFFETS DE 'TYPGR' LORS
< DES RETOURS EN ARRIERE DANS
< L'ANALYSE.
< TYPERR : SUR LE MOT COURANT ,
< TYPERP : SUR LE MOT PRECEDENT.
<
<
< ARGUMENT :
< A=<ARGUMENT1>=0.
<
<
< RESULTAT :
< B=5#0 (APPEL PAR 'TACTER').
<
<
TYPERR: EQU $
STBY DESCS,C < RAZ INDICATEUR DE DEBUT GROUPE.
LBI 5 < RETOUR EN ERREUR.
RSR
TYPERP: EQU $
STBY DESCS-LDESC,C
LBI 5
RSR
PAGE
<
<
< R E E C R I T U R E D E S
< P R O P O S I T I O N S R E L A T I V E S :
<
<
< FONCTION :
< CETTE ROUTINE EST CHARGEE D'UN
< TRAVAIL SEMI-SEMANTIQUE ; ELLE DOIT
< METTRE CHAQUE PROPOSITION ISOLEE
< SOUS LA FORME SUIVANTE :
< <SUJET>((<PRO.REL>)<OPERATEUR>(<OBJET>)) ,
< PUIS :
< <SUJET>(<OPERATEUR>(<OBJET>))(<PRO.REL>) ,
< EN TENANT COMPTE DES ECRITURES
< SPECIFIQUES A CHAQUE PRONOM RELATIF ,
< ET EN PARTICULIER A 'QUI' ET 'QUE'.
< <N1> ET <N2> DESIGNANT DES <GN> ,
< ET <V> UN <GV> , ON A LES REGLES
< DE REECRITURE SUIVANTE :
<
< <N1>'QUI'<V><N2>--><N1><V><N2> ,
< <N1>'QUE'<V><N2>--><N2><V><N1> ,
< <N1>'QUE'<N2><V>--><N2><V><N1>.
<
<
< ARGUMENT :
< A=@NIVEAU DE RECURSIVITE DE LA
< PROPOSITION (A STACKER...).
<
<
REC: EQU $
PSR X
<
< NETTOYAGE DU DESCRIPTEUR DE PROPOSITION :
<
LB APR < B=POINTEUR DE PILE.
SBT 0+16 < POSITIONNEMENT DE L'INDEX.
STB APR < APR DEVIENT UN RELAI INDEXE.
LXI LREL-1
E802: EQU $
STZ &APR < REMISE A 0.
JDX E802
RBT 0+16 < SUPPRESSION DE L'INDEX.
STB APR < RESTAURE LE POINTEUR DE PILE.
<
< STACKAGE DE LA PROPOSITION :
<
BSR ASTACK
<
< PREPARATION DE LA REECRITURE :
<
LR A,W < W BASE LE NIVEAU DE RECUR-
< SIVITE DE LA PROPOSITION.
LA APR
LR A,C
ADRI -2,C < C BASE LE DESCRIPTEUR DE
< PROPOSITION RELATIVE -2.
ADRI LREL-1,A
STA APR < RESERVATION DE LA MEMOIRE
< DESTINEE AU DESCRIPTEUR DANS
< LA PILE.
LYI 0 < Y=0=PAS DE GROUPE CONJONCTIF
< EN COURS.
<
< PARCOURS DE LA PROPOSITION A LA RECHERCHE DES
< DEBUTS DE GROUPE SYNTAGMATIQUES :
<
E804: EQU $
ADRI 1,W < PASSAGE AU MOT SUIVANT DE
< LA PROPOSITION.
LA 0,W < A=@DESCRIPTEUR DU MOT COURANT.
JAE E805 < EN FAIT : FIN DE PROPOSITION.
LR W,B < SAVE W DANS B.
LR A,W < W=@DESCRIPTEUR DU MOT COURANT.
LBY DESCS,W < ACCES A L'INDICATEUR DE DEBUT
< DE GROUPE SYNTAGMATIQUE.
JAE E806 < CE N'EST PAS UN DEBUT DE GROUPE.
CPI TCONJ < OUI , ALORS EST-CE UN 'TCONJ' ???
JE E809 < OUI , LES CONJONCTIONS NE SONT
< PAS TRAITEES LORS DE CETTE
< PASSE.
CPZR Y < Y-A-T'IL UN GROUPE CONJONCTIF
< EN COURS ???
JE E840 < NON , DONC LE DEBUT DE GROUPE
< SUR LEQUEL ON EST DOIT ETRE PRIS.
<
< CAS DES 'TCONJ' EN COURS :
<
ADRI 1,Y < COMPTAGE DES MOTS RECUPERES A LA
< SUITE D'UN 'TCONJ'.
CPBY 1,C < LE GROUPE PRECEDENT EST-IL
< DE MEME NATURE QUE LE GROUPE
< QUI COMMENCE ???
JE E806 < OUI , LE GROUPE QUI COOMENCE
< ICI EST DONC IGNORE.
LYI 0 < SI LES 2 GROUPES DIFFERENT ,
< ON MET FIN AU 'TCONJ' EN COURS ,
< ET ON COMMENCE UN NOUVEAU
< GROUPE.
<
< CAS DES DEBUTS DE GROUPE TGV/TGN/TINT/TREL :
<
E840: EQU $
ADRI 2,C < PROGRESSION DE LA BASE DE
< GROUPE DANS LE DESCRIPTEUR.
STBY 1,C < L'OCTET2 RECOIT L'INDICATEUR
< DE DEBUT DE GROUPE.
CPI TREL < EST-CE UN GROUPE 'TREL' ???
LAI 1 < NON A PRIORI (1=VALEUR
< INITIALE DU COMPTEUR OCTET3).
JNE E807 < CAS DES GROUPE TGN/TGV/TINT.
LA DESCF,W < CAS DES GROUPES 'TREL'.
ANDI 'FF < A=DISCRIMINANT DES PRONOMS
< RELATIFS.
E807: EQU $
OR 1,C < CONCATENATION AVEC L'INDICATEUR
< DE DEBUT DE GROUPE (OCTET2).
STA 1,C < MISE EN PLACE :
< OCTET2=INDICATEUR DEBUT GROUPE ,
< OCTET3=COMPTEUR INITIAL DES
< MOTS DU GROUPE , OU
< DISCRIMINANT SI 'TREL'.
STB 0,C < LE MOT0 RECOIT LE RELAI DE
< DEBUT DE GROUPE (=@@MOT DE
< DEBUT DU GROUPE).
<
< PASSAGE AU MOT SUIVANT :
<
E808: EQU $
LR B,W < RESTAURE W.
JMP E804 < (S'IL EXISTE....).
<
< CAS DES GROUPES CONJONCTIFS :
<
E809: EQU $
LYI TCONJ < Y=TCONJ#0 : POUR MEMORISER
< LE DEBUT DU GROUPE.
<
< CAS DES MOTS QUI NE SONT PAS A
< UN DEBUT DE GROUPE :
< (OU DANS UN GROUPE IDENTIQUE AU
< PRECEDENT ET SEPARE PAR UN 'TCONJ').
<
E806: EQU $
IC 1,C < ON SE CONTENTE DE LES COMPTER.
JMP E808 < VERS L'ACCES AU MOT SUIVANT.
<
< R E E C R I T U R E D E L A P R O P O S I T I O N :
<
E805: EQU $
LR Y,A
CPI TCONJ
JNE E876 < OK , IL N'Y A PAS DE 'TCONJ'
< EN COURS , OU BIEN AU MOINS UN
< GROUPE LE SUIVAIT.
DC 1,C < SINON , 'TCONJ' SE TROUVAIT
< SEUL EN BOUT DE PROPOSITION ,
< ON LE SUPPRIME DONC DU DERNIER
< GROUPE.
E876: EQU $
LA APR
LR A,C
ADRI -LREL+1,C < REINITIALISATION DE C SUR LA
< 1ERE ENTTREE DU DESCRIPTEUR.
LBY QUIQUE+1,C < ACCES AU DEBUT DE GROUPE
< 'TREL' PRESUME ...
CPI TREL < EST-CE BIEN UN 'TREL' ????
JNE E810 < NON RIEN A FAIRE ....
<
< CAS D'UNE VRAIE PROPOSITION RELATIVE :
<
LA QUIQUE+1,C
ANDI 'FF < ACCES AU DISCRIMINANT.
JAE E813 < CE N'EST PAS 'QUI'/'QUE'/...
<
< CAS DES PRONOMS 'QUI'/'QUE'/... :
<
CPI TQUI < EST-CE 'QUI' ??
JE E813 < C'EST 'QUI'.
CPI TQUE < EST-CE 'QUE' ????
JNE $ < E R R E U R A N A L Y S E ....
<
< CAS DU 'QUE' :
<
LA ALPHA,C
LB ALPHA+1,C
PSR A,B < SAUVEGARDE DE <ALPHA> DANS LA
< PILE D'ANALYSE.
LX BETA,C
LY BETA+1,C < (X,Y)=<BETA> PRESUME.
LBY GVREL+1,C < ACCES A L'INDICATEUR DE DEBUT
< DE GROUPE DE GVREL.
CPI TGV < EST-CE BIEN 'TGV' ???
JE E812 < OUI , OK , ON A DANS L'ORDRE :
< <GV><BETA>.
<
< CAS OU L'ON A : 'QUE'<BETA><GV> :
<
LA GVREL,C
LB GVREL+1,C < (A,B)=<BETA> REEL , ET
< (X,Y)=<GV> REEL.
XR A,X < ECHANGE DE <BETA>
XR B,Y < ET <GV>.
STA GVREL,C < MISE EN PLACE DU VRAI <GV>.
STB GVREL+1,C < (A LA PLACE DE <BETA>).
<
< REECRITURE :
< <ALPHA>'QUE'<GV><BETA>--><BETA>'QUE'<GV><ALPHA>
<
E812: EQU $
STX ALPHA,C < <BETA> ECRASE <ALPHA>.
STY ALPHA+1,C
PLR A,B < RESTAURE LE VRAI <ALPHA>.
STA BETA,C < <ALPHA> REMPLACE <<BETA>.
STB BETA+1,C
<
< MISE SOUS LA FORME <SUJET>(<OPERATEUR>(<OBJET>))(<PRO.REL>) :
<
E813: EQU $
LA QUIQUE,C
LB QUIQUE+1,C
PSR A,B,C < SAVE <PRO.REL> DANS LA PILE
< D'ANALYSE.
XR K,C < SAVE K DANS C.
ADRI LREL-2-1,K < K POINTE BETA+1.
PLR A,B,X,Y < RECUPERATION DE <GV><BETA>.
ADRI -2,K < DEPLACEMENT DE K.
PSR A,B,X,Y < MISE DE <GV><BETA> EN
< <OPERATEUR><OBJET>.
LR C,K < RESTAURE LA PILE K.
PLR A,B,C < RESTAURATION DE C ET <PRO.REL>.
STA BETA,C < MISE DU <PRO.REL> EN QUEUE
STB BETA+1,C < DU DESCRIPTEUR.
<
< ON A DONC MAINTENANT :
< <SUJET>(<OPERATEUR>(<OBJET>))(<PRO.REL>).
<
< SORTIE DE LA ROUTINE :
<
E810: EQU $
PLR X < RESTAURE X.
RSR < ET C'EST TOUT ....
PAGE
<
<
< T E S T S E P A R A T E U R D E V A N T U N E
< C O N J O N C T I O N D E C O O R D I N A T I O N :
<
<
< FONCTION :
< CETTE ROUTINE APPELEE PAR LA GRAMMAIRE
< DE RECONNAISSANCE DES CONJONCTIONS
< DE COORDINATION , LAISSE LE NIVEAU DE
< RECURSIVITE INCHANGE , SAUF SI LE SEPARATEUR
< PRECEDANT LA CONJONCTION EST DE TYPE 'SEP2'.
<
<
< ARGUMENTS :
< A='FF ,
< C=@DESCRIPTEUR SUIVANT LA CONJONCTION.
<
<
TSEPAC: EQU $
AND DESCS-LDESC,C < A=TYPE DU SEPARATEUR PRECEDANT
< LA CONJONCTION.
CPI SEP2 < EST-IL DE TYPE 'SEP2' ???
JNE E720 < NON , IL EST IGNORE.
LAI '7F < CAS DES TYPE 'SEP2' :
STBY -2*LDESC+DESCF,C < ON DEMANDE UN RETOUR AU
< NIVEAU DE RECURSIVITE DE BASE.
E720: EQU $
RSR
PAGE
<
<
< A N A L Y S E U R S Y N T A X I Q U E :
<
<
< FONCTION :
< CETTE ROUTINE EST LA ROUTINE
< PRINCIPALE D'ANALYSE SYNTAXIQUE
< RECURSIVE ; ELLE S'APPUIE SIMULTA-
< NEMENT SUR LA GRAMMAIRE DU FRANCAIS ,
< SUR LA LISTE LEXICOGRAPHIQUE DE LA
< PHRASE A ANALYSER.
<
<
< UTILISATION DES REGISTRES :
< W : BASE LE NOEUD COURANT DE LA GRAMMAIRE ,
< OU L'ADRESSE DE L'ADRESSE DU SUCCESSEUR
< COURANT DU NOEUD COURANT.
< C : BASE LA LISTE DESCRIPTIVE ET
< LEXICOGRAPHIQUE DE LA PHRASE.
< B : CONTIENT LA CONDITION COURANTE
< DE PARCOURS DE LA GRAMMAIRE :
< 0 : OK ,
< 1 : MOT PRECISE NON TROUVE ,
< OU TERMINAL NON RECONNU
< (AU POINT DE VUE DES CATEGO-
< RIES GRAMMATICALES).
< 2 : FIN DE LISTE SUCCESSEURS ,
< 3 : PAS DE FIN DE PHRASE.
< 4 : ERREUR DE SEPARATEUR.
< 5 : CODE DE 'TYPERR'.
<
<
< ARGUMENT :
< W=ADRESSE DU NOEUD COURANT DE LA GRAMMAIRE ,
< C=@DESCRIPTEUR COURANT DE LA PHRASE.
< A=EN GENERAL CONTIENT L'ADRESSE DE
< L'ADRESSE DU NOEUD COURANT DANS UNE
< LISTE DE SUCCESSEURS.
<
<
< RESULTAT :
< B=CONDITION DE RETOUR DE LA GRAMMAIRE ,
< C=LA VALEUR ARGUMENT DANS LE CAS D'UN
< RETOUR EN ERREUR ,
< ET UNE VALEUR EN GENERALE DIFFERENTE
< (DUE AU PARCOURS DE LA PHRASE) EN CAS DE RETOUR
< OK (B=0).
<
<
NOEUD: EQU $
PSR A,W < BEGIN RECURSIVITE.
PSR C < LA BASE C EST SAUVEGARDEE A
< PART AFIN DE POUVOIR CHOISIR
< AU RETOUR ENTRE LA RESTAURER
< OU PAS ....
LBI 0 < CONDITION OK A PRIORI.
<
< ACCES AU NOEUD COURANT :
<
LBY TYPE,W
CPI TYPMAX < VALIDATION DU PARCOURS DE LA
< GRAMMAIRE ....
JL $+2 < OK.
ACTD < E R R E U R A N A L Y S E ...
LR A,X < X=TYPE DU NOEUD COURANT.
<
< TRANSMISSION DE <ARGUMENT1> AUX TYPES :
<
LA TYPE,W
ANDI 'FF < A=<ARGUMENT1>.
BR &ASEXEC < AIGUILLAGE SPECIFIQUE REALISANT
< LE TYPE DU NOEUD.
<
< R E T O U R D E L A R E A L I S A T I O N
< D E S T Y P E S :
<
LOOPN: EQU $
CPZR B < TEST DES CONDITIONS DE RETOUR.
JE GETS < LE RETOUR DU TYPE ETANT OK ,
< ON VA ESSAYER DE PARCOURIR LE
< CHEMIN ISSU DE CE NOEUD ET ALLANT
< VERS L'UN DESSUCCESSEURS.
<
< R E T O U R S E N E R R E U R :
<
RETER: EQU $
PLR C < EN CAS D'UN RETOUR EN ERREUR ,
< ON RESTAURE LA BASE C DONNEE
< COMME ARGUMENT D'ENTREE.
<
< R E T O U R D E L ' A N A L Y S E :
<
RETURN: EQU $
PLR A,W < FIN DE LA RECURSIVITE COURANTE.
RSR < RETOUR AVEC LA CONDITION (B).
<
< R E T O U R O K :
<
RETOK: EQU $
ADRI -1,K < ON DECREMENTE LE REGISTRE K ,
< AFIN DE NE PAS DEPILER LA BASE
< C ARGUMENT D'ENTREE , AFIN DE
< TRANSMETTRE LA VALEUR TELLE
< QU'ELLE VIENT D'ETRE EVENTUELLE-
< MENT MODIFIEE ...
JMP RETURN < VERS LA SORTIE DE L'ANALYSEUR.
<
< A C C E S A U X S U C C E S S E U R S :
<
GETS: EQU $
ADRI SUCCES,W < POSITIONNEMENT DE LA BASE
< W SUR LE 1ER NOEUD SUCCESSEUR
< DU NOEUD COURANT.
<
< BOUCLE DE PARCOURS DE LA LISTE
< DES NOEUDS SUCCESSEURS :
<
E100: EQU $
LA 0,W < RECUPERATION DE L'ADRESSE
< PRESUMEE D'UN NOEUD SUCCESSEUR.
JAE E101 < ERREUR : ON EST ARRIVE AU BOUT
< DE LA LISTE DES SUCCESSEURS.
XR A,W < OK , ON A TROUVE UN SUCCESSEUR :
< W=@DU NOEUD SUCCESSEUR ,
< ET A=SAVE LE REGISTRE W
< CONTENANT L'ADRESSE DE L'ADRESSE
< DU SUCCESSEUR.
BSR ANOEUD < VERS LE TRAITEMENT DU NOEUD
< SUCCESSEUR COURANT.
<
< R E T O U R D ' U N S U C C E S S E U R :
<
LR A,W < RESTAURE LE REGISTRE W.
CPZR B < TEST DES CONDITIONS DE RETOUR
< DU NOEUD SUCCESSEUR.
JE RETOK < OK , ON FAIT UN RETOUR OK.
ADRI 1,W < DANS LE CAS D'UN RETOUR EN ERREUR
< DU NOEUD SUCCESSEUR , ON TENTE DE
< PASSER SUR LE NOEUD SUCCESSEUR
< SUIVANT.
JMP E100
<
< CAS OU IL N'Y A PLUS DE NOEUDS SUCCESSEURS :
<
E101: EQU $
LBI 2 < B=2#0 : CODE D'ERREUR CORRESPON-
< DANT AU FAIT QU'ON EST ARRIVE
< AU BOUT DE LA LISTE.
JMP RETER < VERS UN RETOUR EN ERREUR.
<
<
< T R A I T E M E N T D E S T Y P E S D E N O E U D S :
<
<
< ARGUMENT :
< A=<ARGUMENT1>.
<
<
< N O E U D V I D E N O N T E R M I N A L :
<
VIDE: EQU GETS < VERS L'ACCES AUX SUCCESSEURS.
<
< N O E U D V I D E T E R M I N A L :
<
< FONCTION :
< DANS LE CAS OU <ARGUMENT1> EST
< DIFFERENT DE 0 , ELLE L'AJOUTE A
< L'OCTET0 DU DESCF DU DESCRIPTEUR
< LEXICOGRAPHIQUE PRECEDENT.
<
FIN: EQU $
JAE RETOK < <ARGUMENT1>=0 : RIEN A FAIRE ,
< VERS UN RETOUR OK.
LR A,X < SINON : X=<ARGUMENT1>.
LBY DESCF-LDESC,C < A=OCTET0 DU DESCF DU DESCRIPTEUR
< LEXICOGRAPHQIE PRECEDENT.
ADR X,A < AUQUEL ON AJOUTE <ARGUMENT1>.
STBY DESCF-LDESC,C < ET QUE L'ON MET A JOUR ....
JMP RETOK < PUIS ON FAIT UN RETOUR OK ...
<
< A C T I O N N O N T E R M I N A L E :
<
ACTNT: EQU $
BSR ARG2,W < APPEL DE LA ROUTINE SPECIFI-
< QUE AVEC : A=<ARGUMENT1>.
JMP LOOPN < VERS LE TEST DE LA CONDITION
< DE RETOUR ET L'ACCES EVENTUEL
< AUX SUCCESSEURS.
<
< A C T I O N T E R M I N A L E :
<
ACTER: EQU $
BSR ARG2,W < APPEL DE LA ROUTINE SPECIFI-
< QUE AVEC : A=<ARGUMENT1>.
<
< T E S T D E R E T O U R :
<
RETEST: EQU $
CPZR B < TEST DE LA CONDITION B.
JE RETOK < OK , ON FAIT UN RETOUR OK.
JMP RETER < ERREUR , RETOUR EN ERREUR.
<
< N O E U D N O N T E R M I N A L :
<
< FONCTION :
< CE TYPE DE NOEUD CORRESPOND AUX VLASSES
< GRAMMATICALES DU TYPE <GROUPE NOMINAL> ,
< <GROUPE VERBAL> ,....
< DE PLUS SI <ARGUMENT1> EST DIFFERENT
< DE 0 , ELLE LE MET EN OCTET0 DU
< DESCF DE L'AVANT-DERNIER DESCRIPTEUR
< LEXICOGRAPHIQUE POUR NTERM ('TNT') ,
< ET DU DESCRIPTEUR LEXICO. COURANT
< POUR NTERMC ('TNTC').
<
NTERMC: EQU $
JAE E300 < OK , <ARGUMENT1>=0.
STBY DESCF,C < SINON <ARGUMENT1> EST MIS EN
< OCTET0 DU DESCF DU MOT COURANT.
JMP E300 < ET C'EST PARTI ...
NTERM: EQU $
JAE E300 < OK , <ARGUMENT1>=0.
STBY -2*LDESC+DESCF,C < SINON , <ARGUMENT1> EST MIS
< OCTET0 DE L'AVANT-DERNIER DESCRIP
< TEUR LEXICOGRAPHIQUE.
E300: EQU $
LA ARG2,W < A=ADRESSE DE LA SOUS-GRAMMAIRE
< APPELEE PAR CE NOEUD NON
< TERMINAL.
XR A,W < W=ADRESSE DU PREMIER NOEUD
< DE LA SOUS-GRAMMAIRE ,
< ET A=SAVE LA VALEUR PRECEDENTE
< DE LA BASE W.
BSR ANOEUD < VERS L'ANALYSE DE LA SOUS-
< GRAMMAIRE.
LR A,W < RESTAURE W=ADRESSE DU NOEUD
< COURANT.
JMP LOOPN < VERS LE TEST DE LA CONDITION
< DE RETOUR ET L'ACCES EVENTUEL
< AUX SUCCESSEURS.
<
< N O E U D T E R M I N A L :
<
< FONCTION :
< CE TYPE DE NOEUD CORRESPOND A LA
< RECHERCHE DE MOT DANS LA PHRASE A
< ANALYSER POSSEDANT UNE CATEGORIE
< GRAMMATICALE DONNE (ET CONTENUE
< DANS <ARGUMENT2>).
<
< A T T E N T I O N :
< 'TERMINAL' DESIGNE ICI UN TERMINAL
< AU SENS SYNTAXIQUE , ET NON PAS
< ADNS LE SENS OU IL UTILSE ICI ,C'EST-A
< DIRE 'BOUT DE CHEMIN' DANS LA
< GRAMMAIRE.
<
TERMIN: EQU $
CPZ DESCI,C < EST-ON EN BOUT DE PHRASE ????
JL E111 < OUI , FIN DE PHRASE , LE MOT
< CHERCHE N'Y EST SUREMENT PAS ....
LX ARG2,W < X=CATEGORIE GRAMMATICALE
< RECHERCHEE POUR LE MOT COURANT
< DE LA PHRASE.
LA DESCC,C < ACCES AUX CATEGORIES GRAMMA-
< TICALES DU MOT COURANT.
IF NCATG4-4,X100,X100,
LB DESCC+1,C < CATEGORIES GRAMMATICALES DU
< MOT COURANT.
X100: VAL 0
TBT 0,X < LE MOT COURANT POSSEDE-T'2L
< LA CATEGORIE RECHERCHEE ????
JNC E111 < NON , ON VA DONC FAIRE UN RETOUR
< EN ERREUR.
LBY DESCF,C < SAVE L'OCTET0 DE DESCF.
STX DESCF,C < SAVE LA CATEGORIE GRAMMATICALE
< RECONNUE POUR LE MOT COURANT
< DE <PHRASE> ; CE SAVE PEUT ETRE
< PROVISOIRE , CAR LA CATEGORIE
< REELLE DU MOT COURANT PEUT
< ENCORE CHANGER ....
STBY DESCF,C < RESTAURE L'OCTET0 DE DESCF.
LBI 0 < SI LE MOT COURANT POSSEDE LA
< CATEGORIE RECHERCHEE , ON FAIT
< UN RETOUR OK : B=0.
<
< P R O G R E S S I O N D A N S L A P H R A S E :
<
PROGRE: EQU $
ADRI LDESC,C < PROGRESSION DE LA BASE DE LA
< LISTE DESCRIPTIVE DE LA PHRASE.
JMP GETS < VERS LA RECHERCHE DES SUCCES-
< SEURS (SANS TESTER B , PUISQU'
< ON LE SAIT NUL....).
<
< R E C H E R C H E M O T S P E C I F I E :
<
< FONCTION :
< CE TYPE PERMET DE RECONNAITRE DES
< MOTS PRECISES SPECIFIQUEMENT , TELS
< 'QUE' , 'NE' , 'PAS' ,...
<
< ARGUMENT :
< A=<ARGUMENT1>=LONGUEUR DU MOT RECHERCHE , ET
< EVENTUELLEMENT UN DISCRIMINANT DANS LES
< BITS8-11 (CF. TQUI/TQUE/...).
<
MOTP: EQU $
LY DESCI,C < Y=INDEX PRESUME DU 1ER MOT
< CARACTERE COURANT DE LA PHRASE.
CPZR Y < EST-ON EN BOUT DE PHRASE ????
JL E111 < OUI , DONC LE MOT RECHERCHE
< N'Y EST PAS ....
ANDI 'F < A=LONGUEUR DU MOT SPECIFIE.
CP DESCL,C < ET COMPARAISON A LA LONGUEUR DU
< MOT COURANT DE LA PHRASE.
JNE E111 < ON N'EST PAS EN PRESENCE DU MOT
< SPECIFIE , PUISQUE LES LONGUEURS
< DIFFERENT.
LR A,B < B=LONGUEUR DU MOT RECHERCHE.
LXI 0 < X=INDEX DU MOT RECHERCHE.
<
< BOUCLE DE RECONNAISSANCE :
<
E110: EQU $
LBY &ARG2,W < A=UN CARACTERE DU MOT RECHERCHE.
XR X,Y < ECHANGE DES INDEX.
CPBY &APHR < ET COMPARAISON A UN CARACTERE
< DU MOT COURANT DE LA PHRASE.
XR X,Y < RE-ECHANGE DES INDEX.
JNE E111 < ON N'EST PAS EN PRESENCE DU MOT
< SPECIFIE.
ADRI 1,X < PROGRESSION INDEX MOT PRECISE.
ADRI 1,Y < PROGRESSION INDEX MOT ARGUMENT.
ADRI -1,B < S'IL Y A IDENTITE , DECOMPTE
< DES CARACTERES ENCORE A RECON-
< NAITRE.
CPZR B < EST-CE FINI ???
JNE E110 < NON , ON CONTINUE.
<
< CAS OU ON A TROUVE LE MOT SPECIFIE (A NOTER : B=0) :
<
LA DESCF,C
ANDI 'FF00 < SUPPRESSION DE L'OCTET1.
LR A,X < ET SAVE L'OCTET0 DANS X.
LA TYPE,W
ANDI 'F0 < RECUPERATION DU DISCRIMINANT
< EVENTUEL (TQUI/TQUE/...).
ORR X,A < REGROUPEMENT DES 2 OCTETS.
STA DESCF,C < ET RANGEMENT DE DESCF.
JMP PROGRE < VERS LA PROGRESSION DANS LA
< PHRASE , PUIS LA RECHERCHE DES
< SUCCESSEURS.
<
< CAS DES MOTS SPECIFIES NON TROUVES ,
< OU DES TERMINAUX DE CATEGORIES
< NON RECONNUES :
<
E111: EQU $
LBI 1 < CODE DE L'ERREUR.
JMP RETER < VERS UN RETOUR EN ERREUR.
<
< T E S T N O N T E R M I N A L
< D E F I N D E P H R A S E :
<
FINPH: EQU $
CPZ DESCI,C < EST-ON EN FIN DE PHRASE ???
JL GETS < OUI , ALLONS VERS LA RECHERCHE
< DES SUCCESSEURS EVENTUELS ;
< A NOTER : B=0 !!!
E120: EQU $ < ENTRY DE TEST DE NON-FIN DE
< PHRASE.
LBI 3 < SI ON N'EST PAS EN FIN DE PHRASE ,
< ON CONSIDERE CELA COMME UNE
< ERREUR (B=3).
JMP RETER < VERS UN RETOUR EN ERREUR ...
<
< T E S T N O N T E R M I N A L D E
< N O N - F I N D E P H R A S E :
<
FINNPH: EQU $
CPZ DESCI,C < EST-ON EN FIN DE PHRASE ????
JGE GETS < NON , ALLONS VERS LA RECHERCHE
< DES SUCCESSEURS EVENTUELS ;
< A NOTER : B=0 !!!
JMP E120 < SI ON EST EN FIN DE PHRASE , ON
< CONSIDERE CELA COMME UNE
< ERREUR DE CODE B=3.
<
< T E S T N O N - T E R M I N A L
< D E S E P A R A T E U R :
<
RTSEP: EQU $
LA DESCS,C < ACCES AU SEPARATEUR PRECEANT
< LE MOT COURANT.
ANDI 'FF < PAR PRUDENCE , ON NE SAIT JAMAIS!
CP ARG2,W < EST-CE LE SEPARATEUR RECHERCHE ???
JE GETS < OUI , C'EST BON ; A NOTER : B=0.
<
< CAS DES ERREURS DE SEPARATEURS :
<
E450: EQU $
LBI 4 < CODE D'ERREUR : B=4.
JMP RETER < VERS UN RETOUR EN ERREUR ...
<
< T E S T N O N T E R M I N A L
< D E N O N - S E P A R A T E U R :
<
RTNSEP: EQU $
LA DESCS,C < ACCES AU SEPARATEUR PRECEDANT
< LE MOT COURANT.
ANDI 'FF < TOUJOURS PAR PRUDENCE ...
CP ARG2,W < EST-CE LE NON-SEPARATEUR CHERCHE?
JNE GETS < OUI , OK ; A NOTER : B=0.
JMP E450 < NON ERREUR DE SEPARATEUR ...
PAGE
<
<
< A N A L Y S E U R S Y N T A X I Q U E
< D U F R A N C A I S :
<
<
< E N T R Y :
<
<
WORD DPHR < VALEUR INITIALE DE LA BASE C ,
< SUR LE 1ER DESCRIPTEUR LEXI-
< COGRAPHIQUE.
WORD LOC+'80 < VALEUR INITIALE DE LA BASE L.
WORD AXIOME < VALEUR INITIALE DE LA BASE
< W SUR L'AXIOME DE LA GRAMMAIRE.
SYNTAX: EQU $
LRP K
ADRI -1,K
LR L,B < B=BASE L D'APPEL DE 'SYNTAX' ,
< POUR DISCRIMINER LES APPELS
< PAR GE , DES APPELS PAR LE
< CCI (!DEBUG OU !<R/C>).
PLR C,L,W < INITIALISATION DE C , L ET W.
LA APILE
LR A,K < INITIALISATION DE LA PILE K.
<
< INITIALISATION DE L'ANALYSEUR :
<
LAI 6
STBY DEMSGN < MISE DE DEMSGN EN MODE 'LOAD
< SOUS :SYS'.
<
< M O D E D ' A P P E L :
<
ADRI ZERO-PSYNT,B < B=0 SI APPEL APR LE CCI.
CPZR B < TEST DU MODE D'APPEL ???
JNE E730
BR GOBACK < RIEN A FAIRE SI APPEL PAR CCI.
E730: EQU $
<
< A N A L Y S E S Y N T A X I Q U E :
<
BSR ANOEUD < LANCEMENT DE L'ANALYSE SYNTAXIQUE
< SUR L'AXIOME DE LA GRAMMAIRE.
<
< R E T O U R D ' A N A L Y S E :
<
LY ADPHR < Y=@1ER DESCRIPTEUR LEXICO-
< GRAPHIQUE DE LA PHRASE.
LR Y,C < REPOSITIONNEMENT DE LA BASE C
< SUR LE 1ERE DESCRIPTEUR.
LXI CONDRT
STB &ADUMY < TRANSMISSION DES CONDITIONS
< DE RETOUR DE L'ANALYSE.
PSR B < SAVE LES CONDITIONS DE RETOUR.
CPZR B < TEST DES CONDITIONS DE RETOUR.
JNE E400 < CAS D'UN RETOUR EN ERREUR.
<
< G E N E R A T I O N D E S N I V E A U X
< D E R E C U R S I V I T E :
<
E710: EQU $ < RETOUR AU NIVEAU DE BASE.
LXI 0 < X=NIVEAU COURANT DE RECURSIVITE.
<
< BOUCLE DE CALCUL DES NIVEAUX DE RECURISVITE DU DISCOURS :
<
E401: EQU $
CPZ DESCI,C < EST-CE LA FIN DE PHRASE ???
JL E402 < OUI , C'EST FINI ...
LBY DESCF,C
CPI FRONT < EST-ON A UNE FRONTIERE ???
JE E851 < OUI , LE NIVEAU EST INCHANGE ,
< ET ON LAISSE LA FRONTIERE.
LA DESCF,C < POUR ACCES A L'OCTET0 DU
< DESCF DU MOT COURANT.
SARD 8+16 < SINON , B=-AMPLITUDE DE CHANGE-
< MENT DE NIVEAU DE RECURSIVITE
< DU MOT SUIVANT PAR RAPPORT AU
< MOT COURANT.
E403: EQU $
LR X,A < A=NIVEAU COURANT DE RECURSIVITE.
SBR B,X < CALCUL DU NOUVEAU NIVEAU DE
< RECURSIVITE POUR LE MOT SUIVANT.
E850: EQU $ < ENTRY POUR FRONTIERE.
STBY DESCF,C < QUE L'ON MET EN OCTET0 DU
< DESCF DU MOT COURANT.
ADRI LDESC,C < PASSAGE AU MOT SUIVANT.
CPZR X < RETOUR AU NIVEAU DE BASE ???
JL E710 < OUI : CAS DES CONJONCTIONS DE
< COORDINATION PRECEDEES PAR UN
< SEPARATEUR DE TYPE 'SEP2'.
JMP E401
<
< CAS DES FRONTIERES :
<
E851: EQU $
ORR X,A < LE MOT COURANT EST MIS AU NIVEAU
< DE RECURSIVITE COURANT , MAIS ,
< ON LAISSE LA FRONTIERE.
JMP E850
<
<
< P R O P O S I T I O N S :
<
<
< FONCTION :
< LE MODULE SUIVANT EST DESTINE
< A ISOLER LES PROPOSITIONS CONTENUES
< DANS LA PHARSE , SOUS UNE FORME
< PROCHE DES OPERATEURS BINAIRES DE
< L'ARITHMETIQUE , SOIT EN GENERAL :
<
< <OPERANDE>(<OPERATEUR>(<OPERANDE>)) , SOIT ICI :
<
< <GN>(<PRO.REL>)(<GV>(<GN>)) , AVEC LES
< DEFINTIONS RESTRICTIVES SUIVANTES :
<
< <GN>::=<PRO.PER> /
< <ART>((<ADV>*)<ADJ>*)<NOM>((ADV>*)<ADJ>*)) ,
< <GV>::=<VERBE>(<ADV>*) /
< 'NE'<VERBE>'PAS'(<ADV>*).
<
<
< RESULAT :
< LE RESULTAT DE CETTE PASSE EST
< 'PROPP' QUI DONNE L'ADRESSE D'UNE LISTE
< D'ADRESSE DE DESCRIPTEURS DES
< PROPOSITIONS DE LA PHRASE ; UN
< DESCRIPTEUR DE PROPOSITION DONNANT :
< - LE NIVEAU DE RECURSIVITE DE LA PROPOSITION ,
< - LA LISTE DES ADRESSES DES DESCRIPTEURS
< DES MOTS DE LA PROPOSITION ,
< - UN CODE DE FIN DE PROPOSITION ('0000).
<
<
< PROPP-->(ADP1,DR1),...,(ADPI,DRI),...,(ADPN,DRN),-1
< DRI EST UN DESCRIPTEUR DE PROPOSITION SOUS
< LA FORME :
< <SUJET>((<PRO.REL>)<OPERATEUR>(<OBJET>)) ,
< ADPI--><NR>,ADM1,ADM2,...,ADMJ,...,ADMP,'0000 ,
< ADPI DESIGNE L'ADRESSE D'UN DESCRIPTEUR
< DE PROPOSITION , ET
< ADMJ L'ADRESSE D'UN DESCRIPTEUR DE MOT.
< <NR> EST LE NIVEAU DE RECURSIVITE DE LA
< PROPOSITION ,
< LA PROPOSITION P1 EST LA PROPOSITION PRINCIPALE
< DE LA PHRASE.
<
<
< G E N E R A T I O N D E S P R O P O S I T I O N S :
<
<
E402: EQU $
LAD LDESC,C < A=@ DE LA 1ERE MEMOIRE LIBRE
< DERRIERE LES DESCRIPTEURS.
STA APROPO < A PARTIR DU QUEL , ON VA
STA APR < SAUVEGARDER LES PROPOSITIONS.
LR Y,C < C=@1ER DESCRIPTEUR.
LBI -1 < B=NIVEAU COURANT DE RECURSIVITE.
< (INITIAL).
BSR AEXPRO < EXTRACTION DES PROPOSITIONS
< CONTENUES DANS LA PHRASE.
<
< FIN DE PHRASE :
<
E400: EQU $
LAI FINPHR < A=<FINPHR>.
BSR ASTACK < EMPILEMENT DE <FINPHR>.
LXI PROP1
LA APROPO < RECUPERATION @ DE 'PROPOS'.
STA &ADUMY < TRANSMISSION DE L'ADRESSE
< REELLE DE LA ZONE 'PROPOS'.
LXI PROPP
LA APR < ADRESSE DU 1ER MOT LIBRE
< DERRIERE LA ZONE 'PROPOS'.
STA &ADUMY < TRANSMISSION DU RELAI VERS
< LA PROPOSITION PRINCIPALE ...
<
<
< L I S T E D E S P R O P O S I T I O N S :
<
<
LXI 0 < INITIALISATION DU COMPTEUR DES
< PROPOSITIONS RECONNUES.
LY APROPO
LR Y,W < W=@DU NIVEAU DE RECURSIVITE
< DE LA 1ERE PROPOSITION.
<
< BOUCLE DE RECUPERATION DES ADRESSES DES
< NIVEAUX DE RECURSIVITE DES PROPOSITIONS :
<
E600: EQU $
LA 0,W
JAL E601 < FIN DE PHRASE.
PSR W < EMPILEMENT DE L'ADRESSE DU
< NIVEAU DE RECURSIVITE.
ADRI 1,X < COMPTAGE DES PROPOSITIONS.
<
< BOUCLE DE PARCOURS D'UNE PROPOSITION :
<
E602: EQU $
ADRI 1,W < MOT SUIVANT.
LA 0,W
JANE E602 < (A)#<FINPRO> : ACCES MOT SUIVANT.
ADRI 1,W < DANS LE CAS D'UNE FIN DE PRO-
< POSITION , ON PASSE A LA SUIVANTE
JMP E600 < VERS LE TEST DE FIN DE PHRASE.
<
< BOUCLE D'INVERSION DE L'ORDRE :
<
E601: EQU $
LAI NPROP
XR A,X
STA &ADUMY < TRANSMISSION DU NOMBRE DE
< PROPOSITIONS RECONNUES.
JAE E604 < CAS D'UN RETOUR EN ERREUR.
XR A,X < X=NBRE DE PROPOSITIONS.
E603: EQU $
PLR A < A=RELAI D'ACCES PROPOSITION.
BSR AREC < STACKAGE DE LA PROPOSITION ,
< ET REECRITURE.
JDX E603 < PROPOSITION SUIVANTE.
E604: EQU $
LAI FINPHR
BSR ASTACK < MISE D'UN INDICATEUR DE FIN
< DE PHRASE DANS LA LISTE DES
< PROPOSITIONS.
PLR B < RESTAURE CONDITIONS DE RETOUR.
LY ADPHR < Y=@1ER DESCRIPTEUR LEXICO.
LR Y,C < C=@1ER DESCRIPTEUR LEXICOGRA-
< PHIQUE DE LA PHRASE.
PAGE
IF DEBUG,,X100,
<
<
< E D I T I O N D E L ' A N A L Y S E :
<
<
CPZR B < TEST DU RESULTAT DE RETOUR.
JE E205 < RETOUR OK , ON VA EDITER LE
< RESULTAT DE L'ANALYSE.
<
< RETOUR EN ERREUR :
<
LAD MERR
BSR APRINT < ENVOI D'UN MESSAGE D'ERREUR.
JMP E202 < VERS LE CHARGEMENT DE L'OVERLAY
< SUIVANT.
<
< CAS DES RETOURS OK :
<
E205: EQU $
LAD MCOR
BSR APRINT < ENVOI D'1N MESSAGE OK.
<
< BOUCLE D'EDITION DU RESULTAT :
<
E200: EQU $
CPZ DESCI,C < EST-CE LA FIN DE PHRASE ???
JL E204 < OUI , ON ARRETE LA L'EDITION.
LBY DESCF,C < ACCES A L'OCTET0 DU DESCF.
ADRI 1,A
ORI '80 < CONVERSION EN UN COMPTE DE
< DUPLICATIONS POUR LES VISUS.
STBY MMOT+1 < MAJ DU NBRE DE '>' A EDITER.
LAD MMOT
BSR APRINT < ENVOI D'UN MESSAGE DE DEBUT
< DE LIGNE.
BSR APMOT < EDITION DU MOT COURANT.
LAD MSEM < ENVOI D'UN LIMITEUR.
BSR APRINT
LAD DESCV,C < A=@MOT DE LA VALEUR SEMANTIQUE.
ADR A,A < A=@OCTET DE LA VALEUR.
STA DEMOUT+1 < MIS DANS DEMOUT.
LAI NSEM
STA DEMOUT+2 < MISE EN PLACE DU COMPTE OCTETS.
LAD DEMOUT
SVC 0 < EDITION DE LA VALEUR SEMANTIQUE.
LA DESCF,C
ANDI 'FF < A=CATEGORIE GRAMMATICALE
< RECONNUE POUR LE MOT COURANT.
JAE E203 < LE MOT COURANT EST UN MOT
< PRECISE , RIEN A EDITER.
CPI '80
JGE E203 < MOT PRECISE DU TYPE 'QUI'/'QUE' ,
< IL EST DONC IGNORE.
LR A,X < SINON : X=CATEGORIE RECONNUE.
LA &ANOM < SINON A=@DU NOM DE LA CATEGORIE
< GRAMMATICALE DU MOT COURANT.
BSR APRINT < EDITION DE SA CATEGORIE ...
E203: EQU $
<
< PROGRESSION DANS LA PHRASE :
<
E210: EQU $
ADRI LDESC,C < PROGRESSION DU POINTEUR DES
< DESCRIPTEURS LEXICOGRAPHIQUES.
JMP E200 < AU MOT SUIVANT ....
<
< FIN DE PHRASE :
<
E204: EQU $
<
< EDITION DU NBRE DE PROPOSITIONS :
<
LXI NPROP
LA &ADUMY < A=NBRE DE PROPOSITIONS.
ORI '30 < ON SUPPOSE QU'IL N'Y EN A PAS
< PLUS DE 9 (!!!).
STBY MNPRO+1
LAD MNPRO
BSR APRINT < EDITION DU NBRE.
<
< EDITION DES PROPOSITIONS :
<
LXI PROPP
LY &ADUMY < ACCES AU RELAI DE LA PROPOSITION
< PRINCIPALE.
<
< EDITION D'UNE PROPOSITION :
<
E610: EQU $
LR Y,W < W=@@LISTE D'UNE PROPOSITION.
LA 0,W < A=@LISTE D'UNE PROPOSITION.
JAL E560 < FIN DE PHRASE.
LR A,W < W=@NIVEAU DE RECURSIVITE DE
< LA PROPOSITION COURANTE.
LA 0,W < A=NIVEAU DE RECURSIVITE.
JAL $ < E R R E U R ....
ADRI 1,W < PASSAGE SUR LE 1ER MOT DE
< LA PROPOSITION.
ORI '80 < CONVERSION EN UN COMPTE DE
< DUPLICATION POUR LES VISUS.
ADRI 1,A < POUR AVOIR UN COMPTE>0.
STBY MPRO+1 < MISE A JOUR DU MESSAGE.
LAD MPRO
BSR APRINT < CHANGEMENT DE LIGNE.
E563: EQU $
LA 0,W
JAE E561 < FIN DE PROPOSITION.
<
< EDITION DU MOT COURANT DE LA PROPOSITION COURANTE :
<
LR A,C < C=@DESCRIPTEUR DU MOT COURANT.
LBY DESCS,C < ACCES INDICATEUR DEBUT DE GROUPE.
JAE E580 < CE N'EST PAS UN DEBUT DE GROUPE.
LAI MSEM-MSP < CAS DES DEBUTS DE GROUPE.
E580: EQU $
ADRI MSP-ZERO,A < DEBUT DE GROUPE ???
< OUI : A=@MSEM ,
< NON : A=@MSP.
BSR APRINT < ENVOI D'UN 'SPACE' DE
< SEPARATION DE MOT.
BSR APMOT < OK , EDITION DU MOT COURANT.
ADRI 1,W < PASSAGE AU MOT SUIVANT DE LA
JMP E563 < LA PROPOSITION COURANTE.
<
< FIN DE PROPOSITION :
<
E561: EQU $
ADRI LREL,Y < PASSAGE A LA PROPOSITION
< SUIVANTE.
JMP E610
<
< FIN DE PHRASE :
<
E560: EQU $
<
< EDITION DES PROPOSITIONS REECRITES :
<
LXI PROPP
LY &ADUMY < ACCES PROPOSITION PRINCIPALE.
<
< EDITION 1 PROPOSITION :
<
E834: EQU $
LR Y,W
CPZ 0,W
JL E833 < FIN DE PHRASE.
LAD MREC
BSR APRINT < ENVOI D'UNE EN-TETE.
ADRI 1,W < W BASE LE 1ER MOT DU DESCRIPTEUR
< DE PROPOSITION RELATIVE.
E832: EQU $
LA 0,W
JAE E830 < FIN DE PROPOSITION.
LR A,C < C=@@DESCRIPTEUR DU 1ER MOT
< DU GROUPE COURANT.
LBY 1,W < ACCES A L'INDICATEUR DE DEBUT
< DE GROUPE.
CPI TREL < EST-CE UN 'TREL' ???
JE E830 < OUI , FIN DE PROPOSITION.
LA 1,W
ANDI 'FF
LR A,X < X=NBRE DE MOTS DANS LE GROUPE.
E831: EQU $
PSR C,X
LA 0,C
LR A,C < C=@DESCRIPTEUR DU MOT COURANT.
BSR APMOT < EDITION DU MOT COURANT.
LAD MSP
BSR APRINT < ENVOI D'1N SEPARATEUR.
PLR C,X
ADRI 1,C < MOT SUIVANT DU GROUPE.
JDX E831
LAD MSEM
BSR APRINT < ENVOI D'1N SEPARATEUR DE GROUPE.
ADRI 2,W < PASSAGE GROUPE SUIVANT.
JMP E832
<
< FIN DE PROPOSITION :
<
E830: EQU $
ADRI LREL,Y < PASSAGE NEXT PROPOSITION.
JMP E834
<
< FIN DE PHRASE :
<
E833: EQU $
LY ADPHR < Y=@1ER DESCRIPTEUR LEXICO.
LR Y,C < RESTAURATION DE LA BASE C.
E202: EQU $
X100: VAL 0
<
< C H A R G E M E N T D E L ' O V E R L A Y
< S U I V A N T :
<
E371: EQU $
LAI BRANCH-ZERO
LR A,W < W=@BRANCH D'OVERLAY.
LA NSEMA < NOM DE LA BRANCHE D'ANALYSE
< SEMANTIQUE.
E201: EQU $
STA 0,W < LE NOM DE L'OVERLAY A APPELER
< EST MIS EN TETE DE BRANCHE.
LAD DEMSGN < A=@DEMSGN ; W=@BRANCH.
BSR AOVL < TENTATIVE DE CHARGEMENT.
LAD DEMCCI < CAS DES ERREURS DE CHARGEMENT.
SVC 0 < RETOUR PROVISOIRE AU CCI.
LA NGE < LORS D'UN !GO , ON PROCEDE
< A UN RETOUR A 'GE'.
JMP E201 < VERS LE CHARGEMENT DE 'GE'.
PAGE
<
<
< G R A M M A I R E F R A N C A I S E :
< ( A S S E R T I V E - N E G A T I V E )
<
<
< NOTATIONS :
< <GN> DESIGNE UN <GROUPE-NOMINAL> ,
< <GV> UN <GROUPE VERBAL>.
< <XXX>* INDIQUE QUE LA VARIABLE <XXX> PEUT AVOIR
< UN NBRE QUELCONQUE D'OCCURENCES SUCCESSIVES.
< (<XXX>) INDIQUE QUE L'OCCURENCE DE <XXX> EST
< FACULTATIVE.
< <XXX>::=<YYY>/
< <ZZZ> SIGNIFIE QUE :
< <XXX>::=<YYY> OU
< <XXX>::=<ZZZ>.
<
<
< <PHRASE>::=<PHRASE COMPLETE> ,
< <PHRASE>::=<PHRASE INTERJECTIVE>.
<
<
AXIOME: EQU $ < AXIOME DE LA GRAMMAIRE.
<
< DISCRIMINATION ENTRE LES PHRASES COMPLETES
< (SUJET+VERBE+COMPLEMENT) ET LES
< PHRASES INCOMPLETES (INTERJECTIONS,...) :
<
AXIO1: BYTE TVID;0
WORD 0
WORD GN1 < LA <PHRASE> COMMENCE-T'ELLE
< PAR UN <GN> ???
WORD INT < NON , EST-ELLE INTERJECTIVE ???
WORD 0 < NON , <PHRASE> INCOMPREHENSIBLE.
<
< P H R A S E I N T E R J E C T I V E :
<
< <PHRASE INTERJECTIVE>::=<INTERJECTION>.
<
INT: EQU $
BYTE TACT;TINT
WORD TYPGR < MEMORISATION 'TYPE INTERJECTION'.
WORD INT1 < ET C'EST PARTI ...
WORD 0
INT1: BYTE TERM;0
WORD INTERJ < LE MOT COURANT DE <PHRASE> EST-
< IL UNE INTERJECTION ???
WORD TFINT1 < OUI , REGARDONS SI LA PHRASE
< EST TERMINEE ???
WORD 0 < LA PHRASE N'EST PAS TERMINEE ,
< LA <PHRASE> EST INCOMPREHENSIBLE.
TFINT1: BYTE TFPH < TEST DE FIN DE PHRASE ???
WORD 0
WORD TFINT2 < OK , FIN DE PHRASE TROUVEE.
WORD 0 < ERREUR : ON N'A PAS TROUVE LA
< FIN DE PHRASE.
TFINT2: BYTE TFIN;0 < FIN DE PHRASE INTERJECTIVE ,
< PAR UNE FIN DE CHEMIN DANS
< LA GRAMMAIRE.
<
< P H R A S E C O M P L E T E :
<
< <PHRASE COMPLETE>::=<GN> ,
< <PHRASE COMPLETE>::=<GN><GV>.
<
GN1: BYTE TVID;0 < TEST DU SEPARATEUR PRECEDENT.
WORD 0
WORD GDEB < EST-ON A UN DEBUT DE PHRASE ???
WORD GDEB2 < EST-ON DERRIERE UN 'SEP2' (',',.)
WORD GCONT < AUTRES CAS ....
WORD 0
<
< T E S T D E D E B U T D E P H R A S E :
<
GDEB: BYTE TSEP;0
WORD SEP1+1 < TEST DU SEPARATEUR MAXIMUM.
WORD GN2 < OUI , C'EST OK VERS <GN2>.
WORD 0 < NON , CE N'EST PAS LE DEBUT
< DE LA PHRASE.
<
< T E S T D E S E P 2 :
<
GDEB2: BYTE TSEP;0
WORD SEP2 < TEST DES SEPARATEURS 'SEP2' ???
WORD GN2 < OUI , OK VERS <GN2> ...
WORD 0 < NON.
<
< C A S D E S A U T R E S S E P A R A T E U R S :
<
< ON N'AUTORISE QUE <GN> DERRIERE LES AUTRES SEPARATEURS !!!
<
GCONT: BYTE TNT;0
WORD GN < TEST D'UN <GN> SEUL ???
WORD FING1 < OK , TEST DE LA FIN DE PHRASE ???
WORD 0 < ERREUR.
<
< D E B U T D E P H R A S E :
< O U S E P A R A T E U R S ' S E P 2 ' :
<
< ON AUTORISE ALORS UN GROUPE COMPLET : <GN><GV> !!!
<
GN2: BYTE TNTC;FRONT < ET MISE EN PLACE D'UNE FRONTIERE
< DE RECURSIVITE ...
WORD GN < RECONNAIT-ON LE NON-TERMINAL
< <GN> ???
WORD GV1 < OUI , <GN> EST RECONNU , ALLONS
< RECHERCHER L'EVENTUEL <GV>.
WORD FING1 < <GV> EST ABSENT , ALORS LA
< <PHRASE> DOIT ETRE TERMINEE ...
WORD 0 < LA <PHRASE> N'ETANT PAS TERMINEE
< APRES <GN> LORSQUE <GV> EST
< ABSENT , IL Y A ERREUR.
FING1: BYTE TFPH;0 < TEST DE FIN DE PHRASE ???
WORD 0
WORD FING2 < OK , LA FIN DE PHRASE
< EST RECONNUE.
WORD 0 < ERREUR , ON N'EST PAS SUR
< LA FIN DE PHRASE.
FING2: BYTE TFIN;0 < FIN DE CHEMIN DANS LA GRAMMAIRE ,
< POUR <PHRASE> NE CONTENAT
< QUE <GN>.
<
< RECHERCHE DU <GV> DANS L'AXIOME :
<
GV1: BYTE TNT;0 < RECHERCHE DU <GV> DANS <PHRASE> ??
WORD GV < <GV> EST-IL LA ???
WORD FING1 < OUI , <GV> EST LA , ALLONS ALORS
< TESTER LA PRESENCE DE LA FIN
< DE <PHRAEE>.
WORD 0 < ON N'EST PAS SUR LA FIN
< DE <PHRASE> , IL Y A DONC ERREUR.
<
< P H R A S E C O N T E N U E
< D A N S U N E R E C U R S I V I T E :
< ( 2 )
<
< <PHRASE2>::=<GN><GV>.
<
AXIO2: EQU $
BYTE TACT;TREL
WORD TYPGRP < MEMORISATION 'DEBUT DE RELATIVE'.
WORD AXIO2I < ET C'EST PARTI ...
WORD GERRP < SUPPRESSION TYPE 'TREL'.
WORD 0
AXIO2I: BYTE TNT;BOR < B E G I N R E C U R S I V I T E
< ALLONS TESTER LA PRESENCE
< DE <GN> DANS <PHRASE2>.
WORD GN < EST-ON EN PRESENCE DE <GN> ???
WORD AXI2GV < AYANT RECONNU <GN> DANS LA
< <PHRASE2> , ALLONS TESTER LA
< RECONNAISSANCE DE <GV>.
WORD 0 < ERREUR , <PHRASE2> ERRONNEE ,
< CAR IL LUI MANQUE SON <GV>.
<
< RECHERCHE DU <GV> DANS UNE <PHRASE2> :
<
AXI2GV: BYTE TNT;0
WORD GV < EST-ON EN PRESENCE D'1N <GV>.
WORD GENDR < OUI , ALORS ALLONS FAIRE UNE
< FIN DE RECURSIVITE.
WORD 0 < NON <PHRASE2> ERRONNEE.
<
< G R O U P E N O M I N A L :
<
< <GN>::=<PRONOM PERSONNEL>('DONT'<PHRASE2> /
< 'QUE'<PHRASE2> /
< 'QUE'<PHRASE3> /
< 'QUI'<PHRASE3> )
< <GN>::=<ARTICLE>((<ADVERBE>*)<ADJECTIF>*)<NOM>((<ADVERBE>*)
< <ADJECTIF>*)/
< 'DONT'<PHRASE2>/
< 'QUE'<PHRASE2>/
< 'QUE'<PHRASE3>/
< 'QUI'<PHRASE3>.
<
GN: EQU $
BYTE TACT;TGN
WORD TYPGR < MEMORISATION 'DEBUT DE <GN>'.
WORD GNI < ET C'EST PARTI ...
WORD GERR < SUPPRESSION TYPE 'TGN'.
WORD 0
<
< DISCRIMINATION ENTRE LES <GN>
< REDUITS A UN <PRONOM PERSONNEL> ET LES AUTRES :
<
GNI: EQU $
BYTE TVID;0
WORD 0
WORD GNP < EST-ON EN PRESENCE D'UN
< <PRONOM PERSONNEL> ????
WORD GNN < NON , ALORS EST-ON EN PRESENCE
< D'UN <GN> COMPLET ????
WORD 0 < NON , LE <GN> PRESUME EST
< INCOMPREHENSIBLE.
<
< RECHERCHE <PRONOM PERSONNEL> :
<
GNP: BYTE TERM;0
WORD PROPER < LE MOT COURANT DE <PHRASE>
< EST-IL DANS LA CATEGORIE DES
< PRONOMS PERSONNELS ???
WORD GNOP1 < OUI , EST-IL SUIVI DE 'DONT' ???
WORD GNOP2 < NON , EST-IL SUIVI DE 'QUE' ???
WORD GNOP3 < NON , EST-IL SUIVI DE 'QUI' ???
WORD GCONJ < NON , EST-IL SUIVI D'UNE
< <CONJONCTION> ???
WORD GVIDE < NON , LE <PRONOM-PERSONNEL>
< EST SEUL , ON ARRETE LA LE
< PARCOURS DU CHEMIN DANS LA
< GRAMMAIRE.
WORD 0 < SINON , IL Y A ERREUR.
<
< RECHERCHE DES <GN> DE TYPE <ARTICLE><NOM> :
<
GNN: BYTE TERM;0
WORD ARTICL < LE MOT COURANT DE <PHRASE>
< EST-IL DANS LA CATEGORIE
< DES ARTICLES ???
WORD GNADV < CAS D'UN <ARTICLE> , EST-IL
< SUIVI D'UN <ADVERBE> (OU
< PLUSIEURS) ?????
WORD GNADJ < PAS D'<ADVERBE> , MAIS PEUT-
< ETRE UN OU PLUSIEURS <ADJECTIF> ???
WORD GNOM < NON , ALORS PEUT-ETRE UN <NOM> ???
WORD 0 < NI <ADVERBE> , NI <ADJECTIF> ,
< NI <NOM> : DONC ERREUR.
<
< TEST <ADVERBE> DANS UN <GN> :
<
GNADV: BYTE TERM;0
WORD ADVERB < LE MOT COURANT DE <PHRASE>
< EST-IL DANS LA CATEGORIE
< DES ADVERBES ????
WORD GNADJ < OUI , ALORS EST-IL SUIVI D'UN
< OU PLUSIEURS <ADJECTIF> ????
WORD GNADV < PAS , OU PAS ENCORE D'<ADJECTIF>,
< PEUT-ETRE ALORS UN AUTRE
< <ADVERBE> ????
WORD 0 < NI <ADJECTIF> , NI <ADVERBE> ,
< ALORS , IL Y A ERREUR ...
<
< RECHERCHE DES <ADJECTIF> DANS <GN> :
<
GNADJ: BYTE TERM;0
WORD ADJECT < LE MOT COURANT DE <PHRASE>
< EST-IL DANS LA CATEGORIE DES
< ADJECTIFS ????
WORD GNOM < OUI , ALORS EST-IL SUIVI
< D'UN <NOM> ???
WORD GNADJ < NON PAS , OU PAS ENCORE ,
< MAIS PEUT-ETRE Y-A-T'IL UN
< AUTRE <ADJECTIF> ???
WORD 0 < NI <NOM> , NI <ADJECTIF> , ALORS
< IL Y A ERREUR ....
<
< RECHERCHE DE <NOM> DANS <GN> :
<
GNOM: BYTE TERM;0
WORD NOM < LE MOT COURANT DE <PHRASE> EST-IL
< DANS LA CATEGORIE DES NOMS ????
WORD GNOADV < OUI , ALORS , EST-IL SUIVI
< D'UN <ADVERBE> ????
WORD GNOADJ < NON , PEUT-ETRE EST-IL SUIVI
< D'UN <ADJECTIF> ???
WORD GNOP1 < NON , PEUT-ETRE EST-IL SUIVI
< DU MOT 'DONT' ????
WORD GNOP2 < NON , PEUT-ETRE EST-IL SUIVI
< PAR LE MOT 'QUE' ???
WORD GNOP3 < NON , PEUT-ETRE EST-CE LE
< MOT 'QUI' ???
WORD GCONJ < NON , ALORS UNE <CONJONCTION> ???
WORD GVIDE < RIEN DE TOUT CELA , ON CONSI-
< DERE QUE LE <GN> EST COMPLET.
WORD 0
<
< A N N U L A T I O N D E B U T D E G R O U P E :
<
GERR: BYTE TACTER;0
WORD TYPERR < RAZ INDICATEUR DEBUT DE GROUPE.
GERRP: BYTE TACTER;0
WORD TYPERP < ARZ INDICATEUR DEBUT DE GROUPE.
<
< F I N D E C H E M I N :
<
GVIDE: BYTE TFIN;0 < ON ARRETE LA LE CHEMIN
< DANS LA GRAMMAIRE.
<
< F I N D E R E C U R S I V I T E :
<
GENDR: BYTE TFIN;EOR < ON ARRETE LA LE CHEMIN DANS
< LA GRAMMAIRE , EN FAISANT DE PLUS
< UNE FIN DE RECURSIVITE DU
< DISCOURS ...
<
< RECHERCHE DE <ADVERBE> APRES <NOM> :
<
GNOADV: BYTE TERM;0
WORD ADVERB < LE MOT COURANT DE <PHRASE> ,
< EST-IL UN ADVERBE ?????
WORD GNOADJ < OUI , ALORS EST-IL SUIVI
< D'UN <ADJECTIF> ????
WORD GNOADV < NON , ALORS PEUT-ETRE UN
< AUTRE <ADVERBE> ???
WORD 0 < NON , NI <ADJECTIF> , NI
< <ADVERBE> , IL Y A ERREUR ....
<
< RECHERCHE <ADJECTIF> APRES <NOM>(<ADVERBE>*) :
<
GNOADJ: BYTE TERM;0
WORD ADJECT < LE MOT COURANT DE <PHRASE>
< EST-IL UN ADJECTIF ????
WORD GNOADJ < OUI , EST-IL ALORS SUIVI D'UN
< AUTRE <ADJECTIF> ????
WORD GNOP1 < NON , ALORS EST-IL SUIVI
< DU MOT PRECISE 'DONT' ???
WORD GNOP2 < NON , ALORS EST-IL SUIVI
< DU MOT 'QUE' ???
WORD GNOP3 < NON , ALORS EST-IL SUIVI DU
< MOT 'QUI' ???
WORD GCONJ < NON , ALORS UNE <CONJONCTION> ???
WORD GVIDE < NON , ON ADMET QUE LE <GN>
< EST COMPLET , ON ARRETE LE
< PARCOURS DU CHEMIN.
WORD 0
<
< R E C H E R C H E D E ' D O N T ' :
<
DONT: ASCI "DONT"
GNOP1: BYTE TMOT;4 < EST-ON EN PRESENCE DU MOT
WORD DONT,X < PRECISE 'DONT' ???
WORD AXIO2 < OUI , ALORS A-T'ON BIEN
< 'DONT'<PHRASE2> ????
WORD 0 < NON , PSA DE <PHRASE2> : ERREUR ..
<
< P H R A S E C O N T E N U E
< D A N S U N E R E C U R S I V I T E :
< ( 3 )
<
< <PHRASE3>::=<GV>.
<
AXIO3: EQU $
BYTE TACT;TREL
WORD TYPGRP < MEMORISATION 'DEBUT DE RELATIVE'.
WORD AXIO3I < ET C'EST PARTI ...
WORD GERRP < SUPPRESSION TYPE 'TREL'.
WORD 0
AXIO3I: BYTE TNT;BOR < B E G I N R E C U R S I V I T E
WORD GV < EST-ON EN PRESENCE DE <GV> ???
WORD GENDR < OUI , ON ARRETE LA LE PARCOURS
< DU CHEMIN DANS LA GRAMMAIRE , EN
< FAISANT DE PLUS UNE FIN DE
< RECURSIVITE.
WORD 0 < NON ALORS ERREUR ...
<
< R E C H E R C H E D E ' Q U E ' :
<
QUE: ASCI "QUE "
GNOP2: BYTE TMOT;TQUE+3 < EST-ON EN PRESENCE DU MOT
WORD QUE,X < PRECISE 'QUE' ????
WORD AXIO2 < OUI , ALORS A-T'ON :
< 'QUE'<PHRASE2> ???
WORD AXIO3 < NON , ALORS A-T'ON :
< 'QUE'<PHRASE3> ???
WORD 0 < NON , ERREUR.
<
< R E C H E R C H E D E ' Q U I ' :
<
QUI: ASCI "QUI "
GNOP3: BYTE TMOT;TQUI+3 < EST-ON EN PRESENCE DU MOT
WORD QUI,X < PRECISE 'QUI' ????
WORD AXIO3 < OUI , A-T'ON BIEN ALORS
< 'QUI'<PHRASE3> ????
WORD 0 < NON , ERREUR ....
<
< < G R O U P E V E R B A L > :
<
< <GV>::=<VERBE> ,
< <GV>::=<VERBE><GN> ,
< <GV>::=<VERBE><ADVERBE>* ,
< <GV>::=<VERBE><ADVERBE>*<GN> ,
< <GV>::=<VERBE><ADVERBE>*'DE'<GN> ,
< <GV>::='NE'<VERBE>'PAS' ,
< <GV>::='NE'<VERBE>'PAS'<ADVERBE>*
< <GV>::='NE'<VERBE>'PAS'<ADVERBE>*<GN> ,
< <GV>::='NE'<VERBE>'PAS'<ADVERBE>*'DE'<GN> ,
< <GV>::='NE'<VERBE><GN>'QUE'<GN>.
<
GV: EQU $
BYTE TACT;TGV
WORD TYPGR < MEMORISATION 'DEBUT DE <GV>'.
WORD GVI < ET C'EST PARTI ...
WORD GERR < SUPPRESSION TYPE 'TGN'.
WORD 0
<
< DISCRIMINATION ENTRE LES ASSERTIONS
< ET LE NEGATIONS :
<
GVI: EQU $
BYTE TVID;0
WORD 0
WORD ASSERT < EST-CE UNE ASSERTION ???
WORD NEGAT < NON , ALORS EST-CE UNE NEGATION ?
WORD 0 < NIN ASSERTION , NI NEGATION ,
< ALORS ERREUR !!!
<
< T E S T P H R A S E A S S E R T I V E :
<
ASSERT: BYTE TERM;0
WORD VERBE < LE MOT COURANT DE <PHRASE>
< EST-IL UN VERBE ???
WORD ASSADV < OUI , ALORS EST-IL SUIVI
< D'UN OU PLUSIEURS <ADVERBE> ???
WORD ASSGN < NON , ALORS EST-IL SUIVI D'UN
< <GN> ????
WORD GCONJ < NON , ALORS UNE <CONJONCTION> ???
WORD GVIDE < NON , NI <ADVERBE> , NI
< <GN> , ON ARRETE ICI LE
< PACOURS DU CHEMIN ...
WORD 0
<
< RECHERCHE D'UN <ADVERBE> DERRIERE UN <VERBE> :
<
ASSADV: BYTE TERM;0
WORD ADVERB < LE MOT COURANT DE <PHRASE>
< EST-IL UN <ADVERBE> ???
WORD ASSDE < NON , PAS DE <GN> , ALORS
< EST-IL SUIVI PAR 'DE' ???
WORD ASSGN < OUI , ALORS EST-IL SUIVI DE <GN>?
WORD ASSADV < NON PAS 'DE' , ALORS PEUT-ETRE
< UN AUTRE <ADVERBE> ????
WORD GCONJ < NON , ALORS UNE <CONJONCTION> ???
WORD GVIDE < LE <VERBE><ADVERBE> N'EST NI
< SUIVI DE <GN> , NI DE 'DE' ,
< NI D'UN AUTRE <ADVERBE> ; ON
< ARRETE LE PARCOURS DU CHEMIN ...
WORD 0
<
< RECHERCHE DE 'DE' DERRIERE <VERBE>(<ADVERBE>) :
<
DE: ASCI "DE"
ASSDE: BYTE TMOT;2
WORD DE,X < LE MOT COURANT DE <PHRASE>
< EST-IL LE MOT PRECISE 'DE' ????
WORD ASSGN < OUI , ALORS EST-IL SUIVI
< DE <GN> ???
WORD 0 < NON PAS DE <GN> DERRIERE
< <VERBE>(<ADVERBE>)'DE' ...
< ALORS ERREUR ....
<
< RECHERCHE D'UN <GN> DERRIERE UN <VERBE>... :
<
ASSGN: BYTE TNT;0
WORD GN < EST-ON EN PRESENCE DE <GN> ????
WORD GVIDE < OUI , ON ARRETE ICI LE PARCOURS
< DU CHEMIN ...
WORD 0
<
< T E S T P H R A S E N E G A T I V E :
<
NE: ASCI "NE"
NEGAT: BYTE TMOT;2
WORD NE,X < LE MOT COURANT DE <PHRASE>
< EST-IL LE MOT PRECISE 'NE' ???
WORD NEGV < OUI , EST-IL SUIVI ALORS
< D'UN <VERBE> ???
WORD 0 < NON PAS DE <VERBE> , ERREUR ....
<
< RECHERCHE D'UN <VERBE> DERRIERE 'NE' :
<
NEGV: BYTE TERM;0
WORD VERBE < LE MOT COURANT DE <PHRASE>
< EST-IL UN VERBE ???
WORD NEGP < OUI , ALORS EST-IL SUIVI
< DU MOT PRECISE 'PAS' ????
WORD NEGGN1 < NON , ALORS EST-IL SUIVI
< D'UN <GN> ???
WORD 0 < NI 'PAS' , NI <GN> , ALORS
< IL Y A ERREUR ...
<
< RECHERCHE D'UN <GN> DERRIERE 'NE'<VERBE> :
<
NEGGN1: BYTE TNT;0
WORD GN < EST-ON EN PRESENCE D'UN <GN> ????
WORD NEGQUE < OUI , ALORS EST-IL SUIVI D'UN
< 'QUE' ????
WORD 0 < NON PAS DE 'QUE' : ERREUR ...
<
< RECHERCHE DE 'QUE' DERRIERE 'NE'<VERBE><GN> :
<
NEGQUE: BYTE TMOT;3
WORD QUE,X < LE MOT COURANT DE <PHRASE>
< EST-IL LE MOT PRECISE 'QUE' ???
WORD NEGGN < OUI , ALORS EST-IL SUIVI
< D'UN 2EME <GN> ????
WORD 0 < NON PAS DE 2EME <GN> : ERREUR ...
<
< RECHERCHE D'UN <GN> DERRIERE 'NE'<VERBE>'PAS' , OU
< DERRIERE 'NE'<VERBE><GN>'QUE' :
<
NEGGN: BYTE TNT;0
WORD GN < EST-ON EN PRESENCE D'UN <GN> ???
WORD GVIDE < OUI , LAORS ON ARRETE LE
< PARCOURS DU CHEMIN ...
WORD 0
<
< RECHERCHE D'UN 'PAS' DERRIERE 'NE'<VERBE> :
<
PAS: ASCI "PAS "
NEGP: BYTE TMOT;3
WORD PAS,X < LE MOT COURANT DE <PHRASE>
< EST-IL LE MOT PRECISE 'PAS' ???
WORD NEGADV < OUI , ALORS EST-IL SUIVI
< D'UN <ADVERBE> ???
WORD NEGGN < NON , ALORS EST-IL SUIVI
< D'UN <GN> ???
WORD GVIDE < NON , ON ARRETE ICI LE
< PARCOURS DU CHEMIN ...
WORD 0
<
< RECHERCHE D'UN <ADVERBE> DERRIERE 'NE'<VERBE>'PAS' :
<
NEGADV: BYTE TERM;0
WORD ADVERB < LE MOT COURANT DE <PHRASE>
< EST-IL UN <ADVERBE> ????
WORD ASSDE < OUI , ALORS EST-IL SUIVI
< DE 'DE'<GN> ???
WORD NEGGN < NON , ALORS EST-IL SUIVI
< DE <GN> SEUL ???
WORD NEGADV < NON , ALORS PEUT-ETRE UN
< AUTRE <ADVERBE> ???
WORD GCONJ < NON , ALORS UNE <PROPOSITION> ???
WORD GVIDE < NON , ON ARRETE ICI LE
< PARCOURS DU CHEMIN ....
WORD 0
<
< R E C H E R C H E D E S C O N J O N C T I O N S :
<
GCONJ: BYTE TACT;TCONJ
WORD TYPGR < MISE EN PLACE D'UN DEBUT DE
< GROUPE CONJONCTIF A PRIORI.
WORD GCONJI < TEST CONJONCTION ???
WORD GERR < NON , ARZ DU TYPE 'TCONJ'.
WORD 0
GCONJI: BYTE TERM;0
WORD CONJ < EST-ON EN PRESENCE D'UNE
< CONJONCTION ???
WORD GCI
WORD 0
GCI: BYTE TNT;0
WORD GN1 < ET ON ON RE-RENTRE DANS LA
< GRAMMAIRE ....
WORD GVIDE < FIN DE CHEMIN.
WORD 0
PAGE
<
<
< V A L I D A T I O N D E L ' I M P L A N T A T I O N :
<
<
PILE: VAL 'FF0-6 < RETOUR SUR LA PILE DE SODOME.
X12: EQU ZERO+PILE-LTNI-LTNI
X10: VAL X12-$
ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI MAUVAISE
< IMPLANTATION.
DZS X10+1 < PAR PURE PROPRETE.
EOT #SIP GEN PROCESSEUR#
Copyright © Jean-François COLONNA, 2022-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.