Serge Fleury

Maître de Conférences en linguistique informatique Sorbonne nouvelle, Paris 3
Membre du SYLEDED268

ILPGA / Sorbonne nouvelle
 

 

 

 

 

 

 

 

 

 

 

 

 

Annexes Partie 3 Chapitre 9

A-3-9.1. Analyse avec OLMES

Première analyse avec traçage minimal prédéfini

 

OLMES>e

 

OLMES 2.0 - Macintosh Common Lisp Version 2.0 -

 

 

Chargement du savoir syntaxique et lexical

 

Texte analyse' ? (SANS guillemets)

txt2.lisp

Dictionnaire compile' ? (SANS guillemets)

dic2.lisp

Classes pour le dictionnaire compile' ? (SANS guillemets)

dic2.lisp.ccmm.1

Grammaire compile'e ? (SANS guillemets)

cfg3.lisp

 

 

(PROGN (FORMAT *STANDARD-OUTPUT* *SET-PROCESSING-ENVIRONMENT-FMT-STR*) (OPEN-TEXTUAL-INPUT A-PARSER) (LOAD-LEXICAL-AND-SYNTACTIC-KNOWLEDGE A-PARSER) (FORMAT *STANDARD-OUTPUT* "~2%")) took 32893 milliseconds (32.893 seconds) to run.

Of that, 15331 milliseconds (15.331 seconds) were spent in The Cooperative Multitasking Experience.

181160 bytes of memory allocated.

 

 

Voulez-vous les arbres correspondants aux groupes construits ?

Re'ponses possibles : O oui ou N non

n

Voulez-vous un suivi pas a pas SUR FICHIER ?

Re'ponses possibles : O oui ou N non

n

Partie commune des noms des fichiers de sortie ?

Une re'ponse de type SYMBOL est attendue

sortie-cfg3

 

 

 

 

Phrase 1

 

 

 

Noeud 0

 

 

0-1 1 moulin

0-1 2 N -> MOULIN : 1

 

Noeud 1

 

 

1-2 3 a

1-2 4 PREP -> A : 3

 

Noeud 2

 

 

2-3 5 paroles

2-3 6 N -> PAROLES : 5

 

Noeud 3

 

 

 

Arc(s) nouveau(x) (INITIALISATION)

 

 

2-2 8 SN -> *N* <PREP> <N>

0-0 7 SN -> *N* <PREP> <N>

 

Arc extrait de l'agenda :

2-2 8 SN -> *N* <PREP> <N>

Arc(s) examine'(s) pour combinaison :

2-3 6 N -> PAROLES : 5

 

Arc(s) nouveau(x) (COMBINAISON)

 

 

2-3 9 SN -> N *PREP* <N>

N=6

 

Arc extrait de l'agenda :

2-3 9 SN -> N *PREP* <N>

N=6

 

Arc extrait de l'agenda :

0-0 7 SN -> *N* <PREP> <N>

Arc(s) examine'(s) pour combinaison :

0-1 2 N -> MOULIN : 1

 

Arc(s) nouveau(x) (COMBINAISON)

 

 

0-1 10 SN -> N *PREP* <N>

N=2

 

Arc extrait de l'agenda :

0-1 10 SN -> N *PREP* <N>

N=2

Arc(s) examine'(s) pour combinaison :

1-2 4 PREP -> A : 3

 

Arc(s) nouveau(x) (COMBINAISON)

 

 

0-2 11 SN -> N PREP *N*

N=2 PREP=4

 

Arc extrait de l'agenda :

0-2 11 SN -> N PREP *N*

N=2 PREP=4

Arc(s) examine'(s) pour combinaison :

2-3 6 N -> PAROLES : 5

 

Arc(s) nouveau(x) (COMBINAISON)

 

 

0-3 12 SN -> N : 2 PREP : 4 N : 6

 

Arc extrait de l'agenda :

0-3 12 SN -> N : 2 PREP : 4 N : 6

Arc(s) examine'(s) pour combinaison :

0-0 7 SN -> *N* <PREP> <N>

(LET ((A-SCHEDULER (MAKE-SCHEDULER))) (ADD-ITEM (GET-ACTIVABLE-TASK-POOL A-SCHEDULER) (MAKE-TEXTUAL-DATA-READER A-PARSER)) (SCHEDULE A-SCHEDULER A-PARSER) (VALUES)) took 6134 milliseconds (6.134 seconds) to run.

Of that, 71 milliseconds (0.071 seconds) were spent in The Cooperative Multitasking Experience.

42648 bytes of memory allocated.

 

 

(PROGN (FORMAT *STANDARD-OUTPUT* "~2%") (PROCESSING-TEXTUAL-INPUT A-PARSER) (FORMAT *STANDARD-OUTPUT* "~2%")) took 6684 milliseconds (6.684 seconds) to run.

Of that, 76 milliseconds (0.076 seconds) were spent in The Cooperative Multitasking Experience.

43832 bytes of memory allocated.

 

 

 

Fin du traitement

 

 

 

 

 

Texte analyse' : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:txt:txt2.lisp

Dictionnaire compile' : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:dic:dic2.lisp

Classes pour le dictionnaire compile' : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:dic:dic2∂.lisp∂.ccmm.1

Grammaire compile'e : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:gram:cfg3.lisp

 

 

 

 

 

Fichiers de sortie utilise's

(Re'pertoire : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:results:)

 

 

phrases analyse'es : 1

 

mots traite's : 3

 

re`gles de'clenche'es : 2

 

re`gles ayant re'ussi : 1

 

arcs cre'e's : 12

 

 

Nombre moyen d'e'tapes pour traiter une phrase : 7

Accès à l'interface GASPAR (sous CLOS)

 

OLMES>d

;Compiler warnings :

; Undeclared free variable MENU-TRACE, in an anonymous lambda form.

;Compiler warnings :

; Undefined function OLMES::MAKE-NO-TRACE, in an anonymous lambda form.

; Undefined function OLMES::LOAD-NO-TRACE, in an anonymous lambda form.

; Undefined function OLMES::LOAD-TRACE, in an anonymous lambda form.

 

GASPAR>

 

n'est pas un choix possible. Recommencez.

 

A LOAD-TRACE

GASPAR: Load Traceur-Gaspar de OLMES

 

B LOAD-UNTRACE

GASPAR: Detraceur-Gaspar de OLMES

 

C ANALYSE-WITH-TRACEUR-GASPAR

GASPAR: analyse with traceur-gaspar OLMES

 

D HELP-GASPAR

GASPAR: help on trace and untrace

 

Z QUITTER

Fin du travail avec GASPAR

Chargement des traceurs GASPAR

 

 

GASPAR>a

;Compiler warnings :

; Undeclared free variable *HELP-TRACE*, in HELP-TRACE.

;Compiler warnings :

; Undeclared free variable *RESULT-TREES*, in PRINT-TREES-FOR-CLIM.

;Compiler warnings :

; Undeclared free variable *ABA*, in USE-AND-CREATE-HYPOTHESES.

;Compiler warnings :

; Undeclared free variable *HELP-NETWORK-GRAMMAR* (2 references), in ADD-HELP.

;Compiler warnings :

; Undeclared free variable *HELP-NETWORK-GRAMMAR*, in HELP-NETWORK-GRAMMAR.

;Compiler warnings :

; Undeclared free variable *CURRENT-COMPILED-GRAMMAR*, in NETWORK-LIST.

;Compiler warnings :

; Undeclared free variable *CURRENT-COMPILED-GRAMMAR*, in NETWORK-OBJECTS.

;Compiler warnings :

; Unused lexical variable RULE, in an anonymous lambda form inside CALCULATE-STAT.

; Undeclared free variable *SOMME* (3 references), in an anonymous lambda form inside CALCULATE-STAT.

; Undeclared free variable *RULE-TABLE*, in an anonymous lambda form inside CALCULATE-STAT.

; Undeclared free variable *SOMME*, in an anonymous lambda form inside an anonymous lambda form inside CALCULATE-STAT.

; Unused lexical variable A-RULE, in an anonymous lambda form inside an anonymous lambda form inside CALCULATE-STAT.

; Undeclared free variable *RULE-TABLE*, in CALCULATE-STAT.

;Compiler warnings :

; Undeclared free variable *SOMME*, in ADD.

;Compiler warnings :

; Undeclared free variable *RULE-TABLE*, in PRINT-STAT.

;Compiler warnings :

; Undeclared free variable *CURRENT-COMPILED-GRAMMAR*, in DISPLAY-CURRENT-COMPILED-GRAMMAR.

;Compiler warnings :

; Undefined function GET-RULE-WEIGHT, in an anonymous lambda form inside PRINT-STAT.

; Undefined function GET-SUCCESS, in an anonymous lambda form inside an anonymous lambda form inside CALCULATE-STAT.

; Undefined function SET-RULE-WEIGHT, in an anonymous lambda form inside CALCULATE-STAT.

; Undefined function GET-SUCCESS, in an anonymous lambda form inside CALCULATE-STAT.

; Undefined function NEW-CONSTITUENT-RIGHT-HYPOTHESES, in CUSTOMIZE-NEW-EDGE.

; Undefined function SET-RIGHT-HYPOTHESES, in CUSTOMIZE-NEW-EDGE.

; Undefined function NEW-CONSTITUENT-LEFT-HYPOTHESES, in CUSTOMIZE-NEW-EDGE.

; Undefined function SET-LEFT-HYPOTHESES, in CUSTOMIZE-NEW-EDGE.

; Undefined function NEW-CONSTITUENT-RIGHT-HYPOTHESES, in CUSTOMIZE-NEW-EDGE.

; Undefined function SET-RIGHT-HYPOTHESES, in CUSTOMIZE-NEW-EDGE.

; Undefined function NEW-CONSTITUENT-LEFT-HYPOTHESES, in CUSTOMIZE-NEW-EDGE.

; Undefined function SET-LEFT-HYPOTHESES, in CUSTOMIZE-NEW-EDGE.

;Compiler warnings :

; Undeclared free variable *HELP-NO-TRACE*, in HELP-NO-TRACE.

Nouvelle analyse avec traceurs GASPAR

 

GASPAR>c

 

OLMES 2.0 - Macintosh Common Lisp Version 2.0 -

 

 

Chargement du savoir syntaxique et lexical

 

Texte analyse' ? (SANS guillemets)

txt2.lisp

Dictionnaire compile' ? (SANS guillemets)

dic2.lisp

Classes pour le dictionnaire compile' ? (SANS guillemets)

dic2.lisp.ccmm.1

Grammaire compile'e ? (SANS guillemets)

cfg3.lisp

 

 

(PROGN (FORMAT *STANDARD-OUTPUT* *SET-PROCESSING-ENVIRONMENT-FMT-STR*) (OPEN-TEXTUAL-INPUT A-PARSER) (LOAD-LEXICAL-AND-SYNTACTIC-KNOWLEDGE A-PARSER) (FORMAT *STANDARD-OUTPUT* "~2%")) took 26393 milliseconds (26.393 seconds) to run.

Of that, 17862 milliseconds (17.862 seconds) were spent in The Cooperative Multitasking Experience.

73984 bytes of memory allocated.

 

 

Voulez-vous les arbres correspondants aux groupes construits ?

Re'ponses possibles : O oui ou N non

n

Voulez-vous un suivi pas a pas SUR FICHIER ?

Re'ponses possibles : O oui ou N non

n

Partie commune des noms des fichiers de sortie ?

Une re'ponse de type SYMBOL est attendue

sortie-cfg3-gaspar

 

 

 

 

Phrase 1

 

 

 

Noeud 0

 

 

0-1 1 moulin

0-1 2 N -> MOULIN : 1

 

Noeud 1

 

 

1-2 3 a

1-2 4 PREP -> A : 3

 

Noeud 2

 

 

2-3 5 paroles

2-3 6 N -> PAROLES : 5

 

Noeud 3

 

 

 

=====================================================================

 

 

=====================================================================

 

 

;;;;Compiled-network-grammar

 

Here's the complete compiled network :

 

 

Regle n.1:

SN0 --> (N0 PREP0 N1)

 

 

 

;;;;Phrase en cours d'analyse

0 MOULIN 1 A 2 PAROLES

 

 

=====================================================================

 

 

Arc(s) nouveau(x) (INITIALISATION)

 

 

2-2 8 SN -> *N* <PREP> <N>

0-0 7 SN -> *N* <PREP> <N>

 

Arc extrait de l'agenda :

2-2 8 SN -> *N* <PREP> <N>

 

=====================================================================

 

;;;;Try-to-continue-edges :before

 

 

Nouvel arc a construire

 

Noeud de depart: 2

Noeud de fin: 2

Label de l'arc: N

Numero de l'arc: 8

 

---Arcs disponibles

 

 

--Internals Arc disponible:

 

 

Noeud de depart: 2

Noeud de fin: 3

Label de l'arc: N

Numero de l'arc: 6

=====================================================================

 

=====================================================================

 

;;;;make-combined-edges :before

 

internals active-edge

 

Noeud de depart: 2

Noeud de fin: 2

Label de l'arc: N

Numero de l'arc: 8

 

internals inactive-edge

 

Noeud de depart: 2

Noeud de fin: 3

Label de l'arc: N

Numero de l'arc: 6

 

;;;;Regle Construite

 

 

Documentation attachee a la partie gauche de la regle qui suit:

NIL

 

Nom de la classe associee au dernier element de la regle qui vient d'etre construite:N0

 

 

Label de la classe qui vient d'etre construite:N

 

=====================================================================

 

 

Arc(s) nouveau(x) (COMBINAISON)

 

 

2-3 9 SN -> N *PREP* <N>

N=6

 

=====================================================================

 

 

;;;;Internals-edges

 

Noeud de depart: 2

Noeud de fin: 2

Label de l'arc: N

Numero de l'arc: 8

 

;;;;Construction d'un Rhs element

 

 

Documentation attachee au dernier elememt pointe de la regle qui suit:

NIL

 

Label de cet element:N

 

 

Nom de la classe associee a cet element:N0

 

 

Prochaine classe necessaire:PREP0

 

Arbres construits --in progress--

 

0 (N MOULIN)

 

1 (PREP A)

 

2 (N PAROLES)

 

=====================================================================

 

 

Arc extrait de l'agenda :

2-3 9 SN -> N *PREP* <N>

N=6

 

=====================================================================

 

 

;;;;Internals-edges

 

Noeud de depart: 2

Noeud de fin: 3

Label de l'arc: PREP

Numero de l'arc: 9

 

;;;;Construction d'un Rhs element

 

 

Documentation attachee au dernier elememt pointe de la regle qui suit:

NIL

 

Label de cet element:PREP

 

 

Nom de la classe associee a cet element:PREP0

 

 

Prochaine classe necessaire:N1

 

Arbres construits --in progress--

 

0 (N MOULIN)

 

1 (PREP A)

 

2 (N PAROLES)

 

=====================================================================

 

 

Arc extrait de l'agenda :

0-0 7 SN -> *N* <PREP> <N>

 

=====================================================================

 

;;;;Try-to-continue-edges :before

 

 

Nouvel arc a construire

 

Noeud de depart: 0

Noeud de fin: 0

Label de l'arc: N

Numero de l'arc: 7

 

---Arcs disponibles

 

 

--Internals Arc disponible:

 

 

Noeud de depart: 0

Noeud de fin: 1

Label de l'arc: N

Numero de l'arc: 2

=====================================================================

 

=====================================================================

 

;;;;make-combined-edges :before

 

internals active-edge

 

Noeud de depart: 0

Noeud de fin: 0

Label de l'arc: N

Numero de l'arc: 7

 

internals inactive-edge

 

Noeud de depart: 0

Noeud de fin: 1

Label de l'arc: N

Numero de l'arc: 2

 

;;;;Regle Construite

 

 

Documentation attachee a la partie gauche de la regle qui suit:

NIL

 

Nom de la classe associee au dernier element de la regle qui vient d'etre construite:N0

 

 

Label de la classe qui vient d'etre construite:N

 

=====================================================================

 

 

Arc(s) nouveau(x) (COMBINAISON)

 

 

0-1 10 SN -> N *PREP* <N>

N=2

 

=====================================================================

 

 

;;;;Internals-edges

 

Noeud de depart: 0

Noeud de fin: 0

Label de l'arc: N

Numero de l'arc: 7

 

;;;;Construction d'un Rhs element

 

 

Documentation attachee au dernier elememt pointe de la regle qui suit:

NIL

 

Label de cet element:N

 

 

Nom de la classe associee a cet element:N0

 

 

Prochaine classe necessaire:PREP0

 

Arbres construits --in progress--

 

0 (N MOULIN)

 

1 (PREP A)

 

2 (N PAROLES)

 

=====================================================================

 

 

Arc extrait de l'agenda :

0-1 10 SN -> N *PREP* <N>

N=2

 

=====================================================================

 

;;;;Try-to-continue-edges :before

 

 

Nouvel arc a construire

 

Noeud de depart: 0

Noeud de fin: 1

Label de l'arc: PREP

Numero de l'arc: 10

 

---Arcs disponibles

 

 

--Internals Arc disponible:

 

 

Noeud de depart: 1

Noeud de fin: 2

Label de l'arc: PREP

Numero de l'arc: 4

=====================================================================

 

 

Arc(s) nouveau(x) (COMBINAISON)

 

 

0-2 11 SN -> N PREP *N*

N=2 PREP=4

 

=====================================================================

 

 

;;;;Internals-edges

 

Noeud de depart: 0

Noeud de fin: 1

Label de l'arc: PREP

Numero de l'arc: 10

 

;;;;Construction d'un Rhs element

 

 

Documentation attachee au dernier elememt pointe de la regle qui suit:

NIL

 

Label de cet element:PREP

 

 

Nom de la classe associee a cet element:PREP0

 

 

Prochaine classe necessaire:N1

 

Arbres construits --in progress--

 

0 (N MOULIN)

 

1 (PREP A)

 

2 (N PAROLES)

 

=====================================================================

 

 

Arc extrait de l'agenda :

0-2 11 SN -> N PREP *N*

N=2 PREP=4

 

=====================================================================

 

;;;;Try-to-continue-edges :before

 

 

Nouvel arc a construire

 

Noeud de depart: 0

Noeud de fin: 2

Label de l'arc: N

Numero de l'arc: 11

 

---Arcs disponibles

 

 

--Internals Arc disponible:

 

 

Noeud de depart: 2

Noeud de fin: 3

Label de l'arc: N

Numero de l'arc: 6

=====================================================================

 

=====================================================================

 

;;;;make-combined-edges :before

 

internals active-edge

 

Noeud de depart: 0

Noeud de fin: 2

Label de l'arc: N

Numero de l'arc: 11

 

internals inactive-edge

 

Noeud de depart: 2

Noeud de fin: 3

Label de l'arc: N

Numero de l'arc: 6

 

;;;;Regle Construite

 

 

Documentation attachee a la partie gauche de la regle qui suit:

NIL

 

Nom de la classe associee au dernier element de la regle qui vient d'etre construite:N1

 

 

Label de la classe qui vient d'etre construite:N

 

=====================================================================

 

 

Arc(s) nouveau(x) (COMBINAISON)

 

 

0-3 12 SN -> N : 2 PREP : 4 N : 6

 

Arc extrait de l'agenda :

0-3 12 SN -> N : 2 PREP : 4 N : 6

 

=====================================================================

 

;;;;Try-to-continue-edges :before

 

 

Nouvel arc a construire

 

Noeud de depart: 0

Noeud de fin: 3

Label de l'arc: SN

Numero de l'arc: 12

 

---Arcs disponibles

 

 

--Internals Arc disponible:

 

 

Noeud de depart: 0

Noeud de fin: 0

Label de l'arc: N

Numero de l'arc: 7

=====================================================================

 

 

=====================================================================

 

Arbres construits terminaux

#<ACTIVE-CHART #x438B29>

Class: #<STANDARD-CLASS ACTIVE-CHART>

Wrapper: #<CCL::CLASS-WRAPPER ACTIVE-CHART #x3F5C21>

Instance slots

NUMBER-OF-EDGES: 12

NUMBER-OF-WORDS: 3

SUCCESSES: NIL

FIRST-VERTEX: #<VERTEX-FOR-BIDIRECTIONAL-ACTIVE-CHART #x438B51>

AGENDA: #<DEPTH-FIRST-AGENDA #x438B89>

SCHEDULER::WAITING: NIL

NUMBER: 1

 

0 (SN (N MOULIN) (PREP A) (N PAROLES))

 

0 (N MOULIN)

 

1 (PREP A)

 

2 (N PAROLES)

 

Arbres construits terminaux for CLIM

#<ACTIVE-CHART #x438B29>

Class: #<STANDARD-CLASS ACTIVE-CHART>

Wrapper: #<CCL::CLASS-WRAPPER ACTIVE-CHART #x3F5C21>

Instance slots

NUMBER-OF-EDGES: 12

NUMBER-OF-WORDS: 3

SUCCESSES: NIL

FIRST-VERTEX: #<VERTEX-FOR-BIDIRECTIONAL-ACTIVE-CHART #x438B51>

AGENDA: #<DEPTH-FIRST-AGENDA #x438B89>

SCHEDULER::WAITING: NIL

NUMBER: 1

 

=====================================================================

Taper: (help) a la fin d'une analyse pour disposer des outils de

visualisation des resultats de la compilation ou pour le

Tracage/No-tracage

 

=====================================================================

(LET ((A-SCHEDULER (MAKE-SCHEDULER))) (ADD-ITEM (GET-ACTIVABLE-TASK-POOL A-SCHEDULER) (MAKE-TEXTUAL-DATA-READER A-PARSER)) (SCHEDULE A-SCHEDULER A-PARSER) (VALUES)) took 30668 milliseconds (30.668 seconds) to run.

Of that, 364 milliseconds (0.364 seconds) were spent in The Cooperative Multitasking Experience.

53592 bytes of memory allocated.

 

 

(PROGN (FORMAT *STANDARD-OUTPUT* "~2%") (PROCESSING-TEXTUAL-INPUT A-PARSER) (FORMAT *STANDARD-OUTPUT* "~2%")) took 31166 milliseconds (31.166 seconds) to run.

Of that, 368 milliseconds (0.368 seconds) were spent in The Cooperative Multitasking Experience.

54976 bytes of memory allocated.

 

 

 

Fin du traitement

 

 

 

 

 

Texte analyse' : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:txt:txt2.lisp

Dictionnaire compile' : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:dic:dic2.lisp

Classes pour le dictionnaire compile' : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:dic:dic2∂.lisp∂.ccmm.1

Grammaire compile'e : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:gram:cfg3.lisp

 

 

 

 

 

Fichiers de sortie utilise's

(Re'pertoire : Macintosh HD:Jussieu:CLOS:Olmes:Code:data:results:)

 

 

phrases analyse'es : 1

 

mots traite's : 3

 

re`gles de'clenche'es : 2

 

re`gles ayant re'ussi : 1

 

arcs cre'e's : 12

 

 

Nombre moyen d'e'tapes pour traiter une phrase : 7

Outils de l'interface GASPAR

 

 

GASPAR>d

 

GASPAR-HELP>a

 

.....................................................................

 

Trois HELP sont disponibles:

 

 

.....................................................................

 

Le premier concerne la grammaire compilee: (help-network-grammar)

 

 

.....................................................................

 

Le second concerne le tracage des methodes au cours de l'analyse:

(help-trace)

 

 

.....................................................................

 

Le troisieme concerne le non-tracage des methodes au cours de l'analyse:

(help-no-trace)

 

 

.....................................................................

 

GASPAR-HELP>b

 

 

.......................................................................

TRACAGE: the interface functions and their documentation.

* SCHEDULER:RUN

NIL

 

* OLMES::COMBINE

NIL

 

* OLMES::TRY-TO-CONTINUE-EDGES

NIL

 

* OLMES::MAKE-COMBINED-EDGE

NIL

 

* OLMES::CUSTOMIZE-NEW-EDGE

NIL

 

.......................................................................

 

GASPAR-HELP>c

 

.......................................................................

NO-TRACAGE: the interface functions and their documentation.

* OLMES::MAKE-NO-TRACE-ON-RUN

"no-trace sur la methode run"

 

* OLMES::MAKE-NO-TRACE-ON-COMBINE

"no-trace sur la methode combine"

 

* OLMES::MAKE-NO-TRACE-ON-TRY-TO-CONTINUE-EDGES

"no-trace sur la methode try-to-continue-edges, types d'argument:

new-constituent-maker, building-edge ou edge-entity"

 

* OLMES::MAKE-NO-TRACE-ON-MAKE-COMBINED-EDGE

"no-trace sur la methode make-combined-edge l'argument peut etre

new-constituent-maker"

 

* OLMES::MAKE-NO-TRACE-ON-USE-AND-CREATE-HYPOTHESES

"no-trace sur la methode use-and-create-hypotheses"

 

* OLMES::MAKE-NO-TRACE

"No-tracage pour les methodes contenues dans *help-no-tracage*"

 

.......................................................................

GASPAR-HELP>z

 

"The end"

GASPAR>z

 

"The end"

 

Retour à l'interface principale pour OLMES:

 

OLMES>

 

n'est pas un choix possible. Recommencez.

 

A COMPILE

Compilation de OLMES

 

B LOAD-PARSER

load du parser de OLMES

 

C LOAD-AND-ANALYSE

ANALYSE with OLMES

 

D TRACE

GASPAR : outil de trace fleurien

 

E ANALYSE

ANALYSE with OLMES

 

F LOAD-CLIM-INTERFACE

Load Clim-Interface for OLMES

 

G CLIM-INTERFACE

Clim-Interface for OLMES

 

Q QUITTER

Fin du travail avec OLMES

 

A-3-9.2. Analyse avec le prototype Gaspar

A-3-9.2.1. Réflexion de structure opérée avec Self

 

 

On donne ci-dessous une illustration interactive de l'utilisation de la réflexion de structure en utilisant la notion de miroir mise en place par Self. Après création de l'attribut displayGaspar, on associe à cet attribut l'objet miroir obtenu sur Gaspar via la primitive reflect:

 

"Self 31" _AddSlots: (| displayGaspar |)

shell

 

"Self 32" displayGaspar: (reflect: gaspar)

shell

 

"Self 33" inspect: displayGaspar

( | prototype = ( mirrors slots).

parent* = traits mirrors slots. | )

Module: mirror

a mirrors slots(on an object)

 

"Self 34" inspect: displayGaspar reflectee

 

( | parent* = traits clonable.

comment = ( 'Gaspar est le prototype qui centralise toutes les activites de gestion des elements mis en oeuvre pour une analyse automatique prototypique: chargement des donnees, affichage du lexique, ajout d\'elements lexicaux, modification d\'elements lexicaux,..., et enfin analyse.\n Pour le moment, l\'analyse travaille sur quatre fichiers qui contiennent chacun leur phrase a analyser et l\'appel au manager pour l\'analyse. Pour analyser une phrase suivre le modele que constitue chacun des fichiers donnes dans PhaseX/txt. L\'acces au menu de gaspar se fait via la syntaxe suivante: gaspar menu. Suivant la tache a effectuer, on fait ensuite appel aux menus associes aux taches visees.\n').

gasparDirectory = '/home/fleury/Self/source/Self-4.0/Phase2/'.

lexiqueGaspar = an object.

metaGaspar = an object.

toolsGaspar = an object.

parserGaspar = an object.

dictGaspar = an object.

categorieGaspar = an object.

categorieGasparDynamic = an object.

menusGaspar = an object. | )

Module:

an object

 

On peut ensuite, en utilisant des primitives prédéfinies, manipuler les miroirs obtenus et ainsi interroger la structure de l'objet Gaspar.

 

 

"Self 38" ((reflect: gaspar) at: (displayGaspar at: 3) name)

a slots plain({ 'Category: lexiqueGaspar'

lexiqueGaspar = an object

})

 

"Self 39" ((reflect: gaspar) at: (displayGaspar at: 1) name)

a slots method(comment = ( 'Gaspar est le prototype qui centralise toutes les activites de gestion des elements mis en oeuvre pour une analyse automatique prototypique: chargement des donnees, affichage du lexique, ajout d\'elements lexicaux, modification d\'elements lexicaux,..., et enfin analyse.\n Pour le moment, l\'analyse travaille sur quatre fichiers qui contiennent chacun leur phrase a analyser et l\'appel au manager pour l\'analyse. Pour analyser une phrase suivre le modele que constitue chacun des fichiers donnes dans PhaseX/txt. L\'acces au menu de gaspar se fait via la syntaxe suivante: gaspar menu. Suivant la tache a effectuer, on fait ensuite appel aux menus associes aux taches visees.\n'))

 

"Self 40" (displayGaspar at: 8) name

'categorieGaspar'

 

"Self 41" ((reflect: gaspar) at: (displayGaspar at: 8) name) isAssignable

false

 

"Self 42" ((reflect: gaspar) at: (displayGaspar at: 8) name) isParent

false

 

})

 

"Self 43" ((reflect: gaspar) at: (displayGaspar at: 0) name)

a slots parent(parent* = traits clonable)

 

"Self 44" ((reflect: gaspar) at: (displayGaspar at: 0) name) isParent

true

 

A moins de connaître tous les protocoles définis via Self pour manipuler ce type de processus, il reste difficile à un non spécialiste du langage de manipuler ce type de processus. On a donc mis en place une interface méta qui active des outils manipulant ces processus de manière transparente pour l'utilisateur.

A-3-9.2.2. Un méta-niveau pour inspecter les objets

 

 

 

Dans l'exemple qui suit on utilise l'interface méta construite pour interroger la structure des objets construits. Dans cet exemple, on effectue une requête d'affichage des attributs d'un prototype <Nom: lesion>. S'il existe une représentation prototypique adéquate, on obtient une présentation détaillée de la structure de ce prototype.

 

 

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta:12

-------------------------------------------------------

-----------------------------------------------------------------------------------------------

Quel type de prototype pour la selection

1. Prototypes/Arbres Construits (recherche sur forme lexicale)

2. Prototypes/Arbres Non Construits (recherche sur Categorie)

3. Tout type de Prototypes/Arbres

Votre Choix: 1

Recherche d'un Arbre Elementaire Construit

-------------------------------------------

Forme de l'Arbre Elementaire Cherche: lesion

Categorie de tete de l'Arbre Elementaire Cherche: Nom

-----------------------------------------------------------------------------------------------

Prototype : ['lesion'|'Nom']

Selection de ce prototype

(repondre par y ou Y): y

----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

Prototype : ['lesion'|'Nom']

Selection de ce prototype

(repondre par y ou Y): n

----------------------------------------------------------------------------------------------

------------------------------------------------------------------

Description des Slots du Prototype : <lesion|Nom>

------------------------------------------------------------------

Nom du Slot: parent

Contenu du Slot parent : parent* = an object

Ce slot est un ParentSlot

Nom du Slot: protoBuilt

Contenu du Slot protoBuilt : protoBuilt = true

Ce slot est un AssignableSlot

Nom du Slot: protoBuilt:

Contenu du Slot protoBuilt: : protoBuilt: = <-

Nom du Slot: protoToBuild

Contenu du Slot protoToBuild : protoToBuild = an object

Ce slot est un AssignableSlot

Nom du Slot: protoToBuild:

Contenu du Slot protoToBuild: : protoToBuild: = <-

Nom du Slot: elemTree

Contenu du Slot elemTree : elemTree = a list(an object, an object)

Ce slot est un AssignableSlot

Nom du Slot: elemTree:

Contenu du Slot elemTree: : elemTree: = <-

Nom du Slot: listCat_ElemTree

Contenu du Slot listCat_ElemTree : listCat_ElemTree = a list('N1PrepNPivot', 'NAdj')

Ce slot est un AssignableSlot

Nom du Slot: listCat_ElemTree:

Contenu du Slot listCat_ElemTree: : listCat_ElemTree: = <-

Nom du Slot: compTree

Contenu du Slot compTree : compTree = an object

Ce slot est un AssignableSlot

Nom du Slot: compTree:

Contenu du Slot compTree: : compTree: = <-

Nom du Slot: treeUp

Contenu du Slot treeUp : treeUp = an object

Ce slot est un AssignableSlot

Nom du Slot: treeUp:

Contenu du Slot treeUp: : treeUp: = <-

Nom du Slot: treeDown

Contenu du Slot treeDown : treeDown = an object

Ce slot est un AssignableSlot

Nom du Slot: treeDown:

Contenu du Slot treeDown: : treeDown: = <-

Nom du Slot: roleTree

Contenu du Slot roleTree : roleTree = 'TermTree'

Ce slot est un AssignableSlot

Nom du Slot: roleTree:

Contenu du Slot roleTree: : roleTree: = <-

Nom du Slot: elts

Contenu du Slot elts : elts = a list('Nom')

Ce slot est un AssignableSlot

Nom du Slot: elts:

Contenu du Slot elts: : elts: = <-

Nom du Slot: nbElts

Contenu du Slot nbElts : nbElts = 1

Ce slot est un AssignableSlot

Nom du Slot: nbElts:

Contenu du Slot nbElts: : nbElts: = <-

Nom du Slot: morphologie

Contenu du Slot morphologie : morphologie = an object

Ce slot est un AssignableSlot

Nom du Slot: morphologie:

Contenu du Slot morphologie: : morphologie: = <-

Nom du Slot: catName

Contenu du Slot catName : catName = 'Nom'

Ce slot est un AssignableSlot

Nom du Slot: catName:

Contenu du Slot catName: : catName: = <-

Nom du Slot: accord

Contenu du Slot accord : accord = an object

Ce slot est un AssignableSlot

Nom du Slot: accord:

Contenu du Slot accord: : accord: = <-

Nom du Slot: checkStructure

Contenu du Slot checkStructure : checkStructure = true

Ce slot est un AssignableSlot

Nom du Slot: checkStructure:

Contenu du Slot checkStructure: : checkStructure: = <-

Nom du Slot: semantique

Contenu du Slot semantique : semantique = a list(an object)

Ce slot est un AssignableSlot

Nom du Slot: semantique:

Contenu du Slot semantique: : semantique: = <-

Nom du Slot: addSemantique:

Contenu du Slot addSemantique: : addSemantique: t = ( semantique addLast: t)

Nom du Slot: resultCopy

Contenu du Slot resultCopy : resultCopy = an object

Ce slot est un AssignableSlot

Nom du Slot: resultCopy:

Contenu du Slot resultCopy: : resultCopy: = <-

Nom du Slot: copy

Contenu du Slot copy : copy = (

resultCopy: clone.

resultCopy protoToBuild: nil.

resultCopy morphologie: globals gaspar categorieGaspar morphologie copy.

resultCopy semantique: list copy.

(semantique = nil) || (semantique size = 0) || (semantique = '')

ifFalse:[(0 to: ((semantique size) - 1)

Do:[ | :i |

resultCopy semantique addLast:

(semantique at:i) copy.

]).

].

(accord = nil) || [accord = '']

ifTrue:[

resultCopy accord: gaspar categorieGaspar accord copy.

resultCopy accord genre: gaspar categorieGaspar genre copy.

resultCopy accord nombre: gaspar categorieGaspar nombre copy.

]

False:[resultCopy accord: accord copy.

resultCopy accord genre: accord genre copy.

resultCopy accord nombre: accord nombre copy.

].

resultCopy.

)

Nom du Slot: inputSemantique

Contenu du Slot inputSemantique : inputSemantique = a list(a list)

Ce slot est un AssignableSlot

Nom du Slot: inputSemantique:

Contenu du Slot inputSemantique: : inputSemantique: = <-

Nom du Slot: inputMorph

Contenu du Slot inputMorph : inputMorph = a list('lesion', a list, 'Nom')

Ce slot est un AssignableSlot

Nom du Slot: inputMorph:

Contenu du Slot inputMorph: : inputMorph: = <-

Nom du Slot: inputForme

Contenu du Slot inputForme : inputForme = 'lesion'

Ce slot est un AssignableSlot

Nom du Slot: inputForme:

Contenu du Slot inputForme: : inputForme: = <-

Nom du Slot: inputLemme

Contenu du Slot inputLemme : inputLemme = 'lesion'

Ce slot est un AssignableSlot

Nom du Slot: inputLemme:

Contenu du Slot inputLemme: : inputLemme: = <-

Nom du Slot: inputFormeNue

Contenu du Slot inputFormeNue : inputFormeNue = 'lesion'

Ce slot est un AssignableSlot

Nom du Slot: inputFormeNue:

Contenu du Slot inputFormeNue: : inputFormeNue: = <-

Nom du Slot: inputGenre

Contenu du Slot inputGenre : inputGenre = 'Fem'

Ce slot est un AssignableSlot

Nom du Slot: inputGenre:

Contenu du Slot inputGenre: : inputGenre: = <-

Nom du Slot: inputNombre

Contenu du Slot inputNombre : inputNombre = 'Sing'

Ce slot est un AssignableSlot

Nom du Slot: inputNombre:

Contenu du Slot inputNombre: : inputNombre: = <-

Nom du Slot: inputClasse

Contenu du Slot inputClasse : inputClasse = 'Nom A Pluriel en S'

Ce slot est un AssignableSlot

Nom du Slot: inputClasse:

Contenu du Slot inputClasse: : inputClasse: = <-

Nom du Slot: checkSemDescription:

Contenu du Slot checkSemDescription: : checkSemDescription: t = (

(t = nil) ifTrue:[ inputSemantique: list copy.]

False:[ inputSemantique: t.].

)

Nom du Slot: checkMorphDescription:

Contenu du Slot checkMorphDescription: : checkMorphDescription: t = (

(t = nil) ifTrue:[ inputMorph: list copy.]

False:[ inputMorph: t.].

(inputMorph size = 0)

ifTrue:[

inputForme: '-'.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size = 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size != 0) && (inputMorph size != 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: (inputMorph at: 1) at: 0.

inputLemme: (inputMorph at: 1) at: 1.

inputGenre: (inputMorph at: 1) at: 2.

inputNombre: (inputMorph at: 1) at: 3.

inputClasse: (inputMorph at: 1) at: 4.

].

morphologie forme: inputForme.

morphologie formeNue: inputFormeNue.

morphologie lemme: inputLemme.

(accord = '') || ( accord = nil)

ifTrue:[accord: globals gaspar categorieGaspar accord copy.

accord genre: globals gaspar categorieGaspar genre copy.

accord nombre: globals gaspar categorieGaspar nombre copy.

].

accord genre type_genre: inputGenre.

accord nombre type_nombre: inputNombre.

morphologie classe: inputClasse.

)

 

Le Prototype : <lesion|Nom> a :

24 slot(s) de type AssignableSlot

0 slot(s) de type ArgumentSlot

1 slot(s) de type parentSlot

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta:

A-3-9.2.3. Rechercher des liens de délégation

 

 

Dans l'exemple qui suit on utilise l'interface méta construite pour rechercher des liens de délégation définis sur le prototype <Nom: lesion>. S'il en existe, on obtient une présentation détaillée des attributs délégués dans chacun des parents trouvés.

 

 

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta:6

-------------------------------------------------------

-----------------------------------------------------------------------------------------------

Quel type de prototype pour la selection

1. Prototypes/Arbres Construits (recherche sur forme lexicale)

2. Prototypes/Arbres Non Construits (recherche sur Categorie)

3. Tout type de Prototypes/Arbres

Votre Choix: 1

Recherche d'un Arbre Elementaire Construit

-------------------------------------------

Forme de l'Arbre Elementaire Cherche: lesion

Categorie de tete de l'Arbre Elementaire Cherche: Nom

-----------------------------------------------------------------------------------------------

Prototype : ['lesion'|'Nom']

Selection de ce prototype

(repondre par y ou Y): y

----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

Prototype : ['lesion'|'Nom']

Selection de ce prototype

(repondre par y ou Y): n

----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

Prototype : ['lesion'|'Nom']

Selection de ce prototype

(repondre par y ou Y): n

----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

Prototype : ['lesion'|'Nom']

Selection de ce prototype

(repondre par y ou Y): n

----------------------------------------------------------------------------------------------

------------------------------------------------------------------

Description des Slots Parents et Herites du Prototype : <lesion|Nom>

------------------------------------------------------------------

Nom du Slot: parent

Contenu du Slot parent : parent* = an object

Ce slot est un ParentSlot

----------> Recherche des Slots Herites via ce Parent

--> Nom du Slot: parent

--> Contenu du Slot parent : parent* = traits clonable

--> Nom du Slot: categorie

--> Contenu du Slot categorie : categorie = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: categorie:

--> Contenu du Slot categorie: : categorie: = <-

--> Nom du Slot: elementaryTree

--> Contenu du Slot elementaryTree : elementaryTree = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: elementaryTree:

--> Contenu du Slot elementaryTree: : elementaryTree: = <-

--> Nom du Slot: complexTree

--> Contenu du Slot complexTree : complexTree = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: complexTree:

--> Contenu du Slot complexTree: : complexTree: = <-

--> Nom du Slot: inside

--> Contenu du Slot inside : inside = 'Traits catNom: comportements partages par tous les Noms'

--> Nom du Slot: display

--> Contenu du Slot display : display = (

('---------------CatNom display-----------\n') printLine.

displayCategorie printLine.

categorie display.

displayMorph printLine.

morphologie display.

displayAccord printLine.

accord display.

displaySemantique printLine.

(semantique _Eq: nil)

ifFalse:[

(0 to: ((semantique size) - 1)

Do: [ | :i |

(' Semantique [', (i + 1) printString,'] attachee au Prototype N',morphologie forme,': \n',

' --------------------------------------- \n') print.

(semantique at: i) display.

]).

].

('--------------- End display-----------\n') printLine.

)

--> Nom du Slot: file

--> Contenu du Slot file : file = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: file:

--> Contenu du Slot file: : file: = <-

--> Nom du Slot: uiDisplay:

--> Contenu du Slot uiDisplay: : uiDisplay: t = (

ui add: self At: t.

(semantique _Eq: nil)

ifFalse:[ ui show: 'semantique' On:reflect:self.

(0 to: ((semantique size) - 1)

Do: [ | :i |

(semantique at: i) uiDisplay: t.

]).

].

(morphologie _Eq: '')

ifFalse:[ ui show: 'morphologie' On:reflect:self.

"morphologie uiDisplay: t."

].

(catName _Eq: '')

ifFalse:[ui show: 'catName' On:reflect:self.

].

(accord _Eq: '')

ifFalse:[ui show: 'accord' On:reflect:self.

"accord uiDisplay: t."]

)

--> Nom du Slot: displayOut:

--> Contenu du Slot displayOut: : displayOut: t = (

file: t.

file write: ('---------------CatNom display-----------\n').

file write: displayCategorie.

categorie displayOut: file.

file write: displayMorph.

morphologie displayOut: file.

file write: displayAccord.

accord displayOut: file.

file write: displaySemantique.

(semantique _Eq: nil)

ifFalse:[

(0 to: ((semantique size) - 1)

Do: [ | :i |

file write: (' Semantique [', (i + 1) printString,'] attachee au Prototype N',morphologie forme,': \n',

' --------------------------------------- \n').

(semantique at: i) displayOut: file.

]).

].

file write: ('--------------- End display-----------\n').

)

Nom du Slot: protoBuilt

Contenu du Slot protoBuilt : protoBuilt = true

Nom du Slot: protoBuilt:

Contenu du Slot protoBuilt: : protoBuilt: = <-

Nom du Slot: protoToBuild

Contenu du Slot protoToBuild : protoToBuild = an object

Nom du Slot: protoToBuild:

Contenu du Slot protoToBuild: : protoToBuild: = <-

Nom du Slot: elemTree

Contenu du Slot elemTree : elemTree = a list(an object, an object)

Nom du Slot: elemTree:

Contenu du Slot elemTree: : elemTree: = <-

Nom du Slot: listCat_ElemTree

Contenu du Slot listCat_ElemTree : listCat_ElemTree = a list('N1PrepNPivot', 'NAdj')

Nom du Slot: listCat_ElemTree:

Contenu du Slot listCat_ElemTree: : listCat_ElemTree: = <-

Nom du Slot: compTree

Contenu du Slot compTree : compTree = an object

Nom du Slot: compTree:

Contenu du Slot compTree: : compTree: = <-

Nom du Slot: treeUp

Contenu du Slot treeUp : treeUp = an object

Nom du Slot: treeUp:

Contenu du Slot treeUp: : treeUp: = <-

Nom du Slot: treeDown

Contenu du Slot treeDown : treeDown = an object

Nom du Slot: treeDown:

Contenu du Slot treeDown: : treeDown: = <-

Nom du Slot: roleTree

Contenu du Slot roleTree : roleTree = 'TermTree'

Nom du Slot: roleTree:

Contenu du Slot roleTree: : roleTree: = <-

Nom du Slot: elts

Contenu du Slot elts : elts = a list('Nom')

Nom du Slot: elts:

Contenu du Slot elts: : elts: = <-

Nom du Slot: nbElts

Contenu du Slot nbElts : nbElts = 1

Nom du Slot: nbElts:

Contenu du Slot nbElts: : nbElts: = <-

Nom du Slot: morphologie

Contenu du Slot morphologie : morphologie = an object

Nom du Slot: morphologie:

Contenu du Slot morphologie: : morphologie: = <-

Nom du Slot: catName

Contenu du Slot catName : catName = 'Nom'

Nom du Slot: catName:

Contenu du Slot catName: : catName: = <-

Nom du Slot: accord

Contenu du Slot accord : accord = an object

Nom du Slot: accord:

Contenu du Slot accord: : accord: = <-

Nom du Slot: checkStructure

Contenu du Slot checkStructure : checkStructure = true

Nom du Slot: checkStructure:

Contenu du Slot checkStructure: : checkStructure: = <-

Nom du Slot: semantique

Contenu du Slot semantique : semantique = a list(an object)

Nom du Slot: semantique:

Contenu du Slot semantique: : semantique: = <-

Nom du Slot: addSemantique:

Contenu du Slot addSemantique: : addSemantique: t = ( semantique addLast: t)

Nom du Slot: resultCopy

Contenu du Slot resultCopy : resultCopy = an object

Nom du Slot: resultCopy:

Contenu du Slot resultCopy: : resultCopy: = <-

Nom du Slot: copy

Contenu du Slot copy : copy = (

resultCopy: clone.

resultCopy protoToBuild: nil.

resultCopy morphologie: globals gaspar categorieGaspar morphologie copy.

resultCopy semantique: list copy.

(semantique = nil) || (semantique size = 0) || (semantique = '')

ifFalse:[(0 to: ((semantique size) - 1)

Do:[ | :i |

resultCopy semantique addLast:

(semantique at:i) copy.

]).

].

(accord = nil) || [accord = '']

ifTrue:[

resultCopy accord: gaspar categorieGaspar accord copy.

resultCopy accord genre: gaspar categorieGaspar genre copy.

resultCopy accord nombre: gaspar categorieGaspar nombre copy.

]

False:[resultCopy accord: accord copy.

resultCopy accord genre: accord genre copy.

resultCopy accord nombre: accord nombre copy.

].

resultCopy.

)

Nom du Slot: inputSemantique

Contenu du Slot inputSemantique : inputSemantique = a list(a list)

Nom du Slot: inputSemantique:

Contenu du Slot inputSemantique: : inputSemantique: = <-

Nom du Slot: inputMorph

Contenu du Slot inputMorph : inputMorph = a list('lesion', a list, 'Nom')

Nom du Slot: inputMorph:

Contenu du Slot inputMorph: : inputMorph: = <-

Nom du Slot: inputForme

Contenu du Slot inputForme : inputForme = 'lesion'

Nom du Slot: inputForme:

Contenu du Slot inputForme: : inputForme: = <-

Nom du Slot: inputLemme

Contenu du Slot inputLemme : inputLemme = 'lesion'

Nom du Slot: inputLemme:

Contenu du Slot inputLemme: : inputLemme: = <-

Nom du Slot: inputFormeNue

Contenu du Slot inputFormeNue : inputFormeNue = 'lesion'

Nom du Slot: inputFormeNue:

Contenu du Slot inputFormeNue: : inputFormeNue: = <-

Nom du Slot: inputGenre

Contenu du Slot inputGenre : inputGenre = 'Fem'

Nom du Slot: inputGenre:

Contenu du Slot inputGenre: : inputGenre: = <-

Nom du Slot: inputNombre

Contenu du Slot inputNombre : inputNombre = 'Sing'

Nom du Slot: inputNombre:

Contenu du Slot inputNombre: : inputNombre: = <-

Nom du Slot: inputClasse

Contenu du Slot inputClasse : inputClasse = 'Nom A Pluriel en S'

Nom du Slot: inputClasse:

Contenu du Slot inputClasse: : inputClasse: = <-

Nom du Slot: checkSemDescription:

Contenu du Slot checkSemDescription: : checkSemDescription: t = (

(t = nil) ifTrue:[ inputSemantique: list copy.]

False:[ inputSemantique: t.].

)

Nom du Slot: checkMorphDescription:

Contenu du Slot checkMorphDescription: : checkMorphDescription: t = (

(t = nil) ifTrue:[ inputMorph: list copy.]

False:[ inputMorph: t.].

(inputMorph size = 0)

ifTrue:[

inputForme: '-'.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size = 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size != 0) && (inputMorph size != 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: (inputMorph at: 1) at: 0.

inputLemme: (inputMorph at: 1) at: 1.

inputGenre: (inputMorph at: 1) at: 2.

inputNombre: (inputMorph at: 1) at: 3.

inputClasse: (inputMorph at: 1) at: 4.

].

morphologie forme: inputForme.

morphologie formeNue: inputFormeNue.

morphologie lemme: inputLemme.

(accord = '') || ( accord = nil)

ifTrue:[accord: globals gaspar categorieGaspar accord copy.

accord genre: globals gaspar categorieGaspar genre copy.

accord nombre: globals gaspar categorieGaspar nombre copy.

].

accord genre type_genre: inputGenre.

accord nombre type_nombre: inputNombre.

morphologie classe: inputClasse.

)

 

Le Prototype : <lesion|Nom> a :

1 slot(s) de type parentSlot

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta:

A-3-9.2.4. Ajouter des liens de délégation

 

 

Dans l'exemple qui suit on utilise l'interface méta pour construire un lien de délégation entre le prototype <Adj: petite> et le prototype traits catAdj. Cet objet est porteur des comportements communs à la catégorie des adjectifs. On associe donc à ce prototype d'adjectif l'objet porteur des comportements partagés par toute la famille des adjectifs.

 

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta:3

-------------------------------------------------------

-----------------------------------------------------------------------------------------------

Quel type de prototype pour la selection

1. Prototypes/Arbres Construits (recherche sur forme lexicale)

2. Prototypes/Arbres Non Construits (recherche sur Categorie)

3. Tout type de Prototypes/Arbres

Votre Choix: 1

Recherche d'un Arbre Elementaire Construit

-------------------------------------------

Forme de l'Arbre Elementaire Cherche: petite

Categorie de tete de l'Arbre Elementaire Cherche: Adj

-----------------------------------------------------------------------------------------------

Prototype : ['petite'|'Adj']

Selection de ce prototype

(repondre par y ou Y): y

----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

Prototype : ['petite'|'Adj']

Selection de ce prototype

(repondre par y ou Y): n

----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

Prototype : ['petite'|'Adj']

Selection de ce prototype

(repondre par y ou Y): n

----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

Prototype : ['petite'|'Adj']

Selection de ce prototype

(repondre par y ou Y): n

----------------------------------------------------------------------------------------------

Recherche des Objets Traits

---------------------------

 

/..../

 

Objet Trait Disponible :<Traits catAdj: comportements partages par tous les Adj>

Selection de ce Trait

(repondre par y ou Y): y

 

/..../

 

------------------------------------------------------------------

Description des Slots Parents et Herites du Prototype : <petite|Adj>

------------------------------------------------------------------

Nom du Slot: protoBuilt

Contenu du Slot protoBuilt : protoBuilt = true

Nom du Slot: protoBuilt:

Contenu du Slot protoBuilt: : protoBuilt: = <-

Nom du Slot: protoToBuild

Contenu du Slot protoToBuild : protoToBuild = an object

Nom du Slot: protoToBuild:

Contenu du Slot protoToBuild: : protoToBuild: = <-

Nom du Slot: elemTree

Contenu du Slot elemTree : elemTree = an object

Nom du Slot: elemTree:

Contenu du Slot elemTree: : elemTree: = <-

Nom du Slot: listCat_ElemTree

Contenu du Slot listCat_ElemTree : listCat_ElemTree = an object

Nom du Slot: listCat_ElemTree:

Contenu du Slot listCat_ElemTree: : listCat_ElemTree: = <-

Nom du Slot: compTree

Contenu du Slot compTree : compTree = an object

Nom du Slot: compTree:

Contenu du Slot compTree: : compTree: = <-

Nom du Slot: treeUp

Contenu du Slot treeUp : treeUp = an object

Nom du Slot: treeUp:

Contenu du Slot treeUp: : treeUp: = <-

Nom du Slot: treeDown

Contenu du Slot treeDown : treeDown = an object

Nom du Slot: treeDown:

Contenu du Slot treeDown: : treeDown: = <-

Nom du Slot: roleTree

Contenu du Slot roleTree : roleTree = 'TermTree'

Nom du Slot: roleTree:

Contenu du Slot roleTree: : roleTree: = <-

Nom du Slot: elts

Contenu du Slot elts : elts = a list('Adj')

Nom du Slot: elts:

Contenu du Slot elts: : elts: = <-

Nom du Slot: nbElts

Contenu du Slot nbElts : nbElts = 1

Nom du Slot: nbElts:

Contenu du Slot nbElts: : nbElts: = <-

Nom du Slot: morphologie

Contenu du Slot morphologie : morphologie = an object

Nom du Slot: morphologie:

Contenu du Slot morphologie: : morphologie: = <-

Nom du Slot: catName

Contenu du Slot catName : catName = 'Adj'

Nom du Slot: catName:

Contenu du Slot catName: : catName: = <-

Nom du Slot: semantique

Contenu du Slot semantique : semantique = a list

Nom du Slot: semantique:

Contenu du Slot semantique: : semantique: = <-

Nom du Slot: addSemantique:

Contenu du Slot addSemantique: : addSemantique: t = ( semantique addLast: t)

Nom du Slot: accord

Contenu du Slot accord : accord = an object

Nom du Slot: accord:

Contenu du Slot accord: : accord: = <-

Nom du Slot: checkStructure

Contenu du Slot checkStructure : checkStructure = true

Nom du Slot: checkStructure:

Contenu du Slot checkStructure: : checkStructure: = <-

Nom du Slot: resultCopy

Contenu du Slot resultCopy : resultCopy = an object

Nom du Slot: resultCopy:

Contenu du Slot resultCopy: : resultCopy: = <-

Nom du Slot: copy

Contenu du Slot copy : copy = (

resultCopy: clone.

resultCopy protoToBuild: nil.

resultCopy morphologie: globals gaspar categorieGaspar morphologie copy.

resultCopy semantique: list copy.

(semantique = nil) || (semantique size = 0) || (semantique = '')

ifFalse:[(0 to: ((semantique size) - 1)

Do:[ | :i |

resultCopy semantique addLast:

(semantique at:i) copy.

]).

].

(accord = nil) || [accord = '']

ifTrue:[

resultCopy accord: gaspar categorieGaspar accord copy.

resultCopy accord genre: gaspar categorieGaspar genre copy.

resultCopy accord nombre: gaspar categorieGaspar nombre copy.

]

False:[resultCopy accord: accord copy.

resultCopy accord genre: accord genre copy.

resultCopy accord nombre: accord nombre copy.

].

resultCopy.

)

Nom du Slot: inputSemantique

Contenu du Slot inputSemantique : inputSemantique = an object

Nom du Slot: inputSemantique:

Contenu du Slot inputSemantique: : inputSemantique: = <-

Nom du Slot: inputMorph

Contenu du Slot inputMorph : inputMorph = an object

Nom du Slot: inputMorph:

Contenu du Slot inputMorph: : inputMorph: = <-

Nom du Slot: inputForme

Contenu du Slot inputForme : inputForme = an object

Nom du Slot: inputForme:

Contenu du Slot inputForme: : inputForme: = <-

Nom du Slot: inputLemme

Contenu du Slot inputLemme : inputLemme = an object

Nom du Slot: inputLemme:

Contenu du Slot inputLemme: : inputLemme: = <-

Nom du Slot: inputFormeNue

Contenu du Slot inputFormeNue : inputFormeNue = an object

Nom du Slot: inputFormeNue:

Contenu du Slot inputFormeNue: : inputFormeNue: = <-

Nom du Slot: inputGenre

Contenu du Slot inputGenre : inputGenre = an object

Nom du Slot: inputGenre:

Contenu du Slot inputGenre: : inputGenre: = <-

Nom du Slot: inputNombre

Contenu du Slot inputNombre : inputNombre = an object

Nom du Slot: inputNombre:

Contenu du Slot inputNombre: : inputNombre: = <-

Nom du Slot: inputClasse

Contenu du Slot inputClasse : inputClasse = an object

Nom du Slot: inputClasse:

Contenu du Slot inputClasse: : inputClasse: = <-

Nom du Slot: checkSemDescription:

Contenu du Slot checkSemDescription: : checkSemDescription: t = (

(t = nil) ifTrue:[ inputSemantique: list copy.]

False:[ inputSemantique: t.].

)

Nom du Slot: checkMorphDescription:

Contenu du Slot checkMorphDescription: : checkMorphDescription: t = (

(t = nil) ifTrue:[ inputMorph: list copy.]

False:[ inputMorph: t.].

(inputMorph size = 0)

ifTrue:[

inputForme: '-'.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size = 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size != 0) && (inputMorph size != 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: (inputMorph at: 1) at: 0.

inputLemme: (inputMorph at: 1) at: 1.

inputGenre: (inputMorph at: 1) at: 2.

inputNombre: (inputMorph at: 1) at: 3.

inputClasse: (inputMorph at: 1) at: 4.

].

morphologie forme: inputForme.

morphologie formeNue: inputFormeNue.

morphologie lemme: inputLemme.

(accord = '') || ( accord = nil)

ifTrue:[accord: globals gaspar categorieGaspar accord copy.

accord genre: globals gaspar categorieGaspar genre copy.

accord nombre: globals gaspar categorieGaspar nombre copy.

].

accord genre type_genre: inputGenre.

accord nombre type_nombre: inputNombre.

morphologie classe: inputClasse.

)

 

Le Prototype : <petite|Adj> a :

0 slot(s) de type parentSlot

-->0

/home/fleury/Self/source/Self-4.0/Phase2/work/buildDelegation.self

/home/fleury/Self/source/Self-4.0/Phase2/work/buildDelegation.self

reading /home/fleury/Self/source/Self-4.0/Phase2/work/buildDelegation.self...

 

------------------------------------------------------------------

Description des Slots Parents et Herites du Prototype : <petite|Adj>

------------------------------------------------------------------

Nom du Slot: protoBuilt

Contenu du Slot protoBuilt : protoBuilt = true

Nom du Slot: protoBuilt:

Contenu du Slot protoBuilt: : protoBuilt: = <-

Nom du Slot: protoToBuild

Contenu du Slot protoToBuild : protoToBuild = an object

Nom du Slot: protoToBuild:

Contenu du Slot protoToBuild: : protoToBuild: = <-

Nom du Slot: elemTree

Contenu du Slot elemTree : elemTree = an object

Nom du Slot: elemTree:

Contenu du Slot elemTree: : elemTree: = <-

Nom du Slot: listCat_ElemTree

Contenu du Slot listCat_ElemTree : listCat_ElemTree = an object

Nom du Slot: listCat_ElemTree:

Contenu du Slot listCat_ElemTree: : listCat_ElemTree: = <-

Nom du Slot: compTree

Contenu du Slot compTree : compTree = an object

Nom du Slot: compTree:

Contenu du Slot compTree: : compTree: = <-

Nom du Slot: treeUp

Contenu du Slot treeUp : treeUp = an object

Nom du Slot: treeUp:

Contenu du Slot treeUp: : treeUp: = <-

Nom du Slot: treeDown

Contenu du Slot treeDown : treeDown = an object

Nom du Slot: treeDown:

Contenu du Slot treeDown: : treeDown: = <-

Nom du Slot: roleTree

Contenu du Slot roleTree : roleTree = 'TermTree'

Nom du Slot: roleTree:

Contenu du Slot roleTree: : roleTree: = <-

Nom du Slot: elts

Contenu du Slot elts : elts = a list('Adj')

Nom du Slot: elts:

Contenu du Slot elts: : elts: = <-

Nom du Slot: nbElts

Contenu du Slot nbElts : nbElts = 1

Nom du Slot: nbElts:

Contenu du Slot nbElts: : nbElts: = <-

Nom du Slot: morphologie

Contenu du Slot morphologie : morphologie = an object

Nom du Slot: morphologie:

Contenu du Slot morphologie: : morphologie: = <-

Nom du Slot: catName

Contenu du Slot catName : catName = 'Adj'

Nom du Slot: catName:

Contenu du Slot catName: : catName: = <-

Nom du Slot: semantique

Contenu du Slot semantique : semantique = a list

Nom du Slot: semantique:

Contenu du Slot semantique: : semantique: = <-

Nom du Slot: addSemantique:

Contenu du Slot addSemantique: : addSemantique: t = ( semantique addLast: t)

Nom du Slot: accord

Contenu du Slot accord : accord = an object

Nom du Slot: accord:

Contenu du Slot accord: : accord: = <-

Nom du Slot: checkStructure

Contenu du Slot checkStructure : checkStructure = true

Nom du Slot: checkStructure:

Contenu du Slot checkStructure: : checkStructure: = <-

Nom du Slot: resultCopy

Contenu du Slot resultCopy : resultCopy = an object

Nom du Slot: resultCopy:

Contenu du Slot resultCopy: : resultCopy: = <-

Nom du Slot: copy

Contenu du Slot copy : copy = (

resultCopy: clone.

resultCopy protoToBuild: nil.

resultCopy morphologie: globals gaspar categorieGaspar morphologie copy.

resultCopy semantique: list copy.

(semantique = nil) || (semantique size = 0) || (semantique = '')

ifFalse:[(0 to: ((semantique size) - 1)

Do:[ | :i |

resultCopy semantique addLast:

(semantique at:i) copy.

]).

].

(accord = nil) || [accord = '']

ifTrue:[

resultCopy accord: gaspar categorieGaspar accord copy.

resultCopy accord genre: gaspar categorieGaspar genre copy.

resultCopy accord nombre: gaspar categorieGaspar nombre copy.

]

False:[resultCopy accord: accord copy.

resultCopy accord genre: accord genre copy.

resultCopy accord nombre: accord nombre copy.

].

resultCopy.

)

Nom du Slot: inputSemantique

Contenu du Slot inputSemantique : inputSemantique = an object

Nom du Slot: inputSemantique:

Contenu du Slot inputSemantique: : inputSemantique: = <-

Nom du Slot: inputMorph

Contenu du Slot inputMorph : inputMorph = an object

Nom du Slot: inputMorph:

Contenu du Slot inputMorph: : inputMorph: = <-

Nom du Slot: inputForme

Contenu du Slot inputForme : inputForme = an object

Nom du Slot: inputForme:

Contenu du Slot inputForme: : inputForme: = <-

Nom du Slot: inputLemme

Contenu du Slot inputLemme : inputLemme = an object

Nom du Slot: inputLemme:

Contenu du Slot inputLemme: : inputLemme: = <-

Nom du Slot: inputFormeNue

Contenu du Slot inputFormeNue : inputFormeNue = an object

Nom du Slot: inputFormeNue:

Contenu du Slot inputFormeNue: : inputFormeNue: = <-

Nom du Slot: inputGenre

Contenu du Slot inputGenre : inputGenre = an object

Nom du Slot: inputGenre:

Contenu du Slot inputGenre: : inputGenre: = <-

Nom du Slot: inputNombre

Contenu du Slot inputNombre : inputNombre = an object

Nom du Slot: inputNombre:

Contenu du Slot inputNombre: : inputNombre: = <-

Nom du Slot: inputClasse

Contenu du Slot inputClasse : inputClasse = an object

Nom du Slot: inputClasse:

Contenu du Slot inputClasse: : inputClasse: = <-

Nom du Slot: checkSemDescription:

Contenu du Slot checkSemDescription: : checkSemDescription: t = (

(t = nil) ifTrue:[ inputSemantique: list copy.]

False:[ inputSemantique: t.].

)

Nom du Slot: checkMorphDescription:

Contenu du Slot checkMorphDescription: : checkMorphDescription: t = (

(t = nil) ifTrue:[ inputMorph: list copy.]

False:[ inputMorph: t.].

(inputMorph size = 0)

ifTrue:[

inputForme: '-'.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size = 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size != 0) && (inputMorph size != 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: (inputMorph at: 1) at: 0.

inputLemme: (inputMorph at: 1) at: 1.

inputGenre: (inputMorph at: 1) at: 2.

inputNombre: (inputMorph at: 1) at: 3.

inputClasse: (inputMorph at: 1) at: 4.

].

morphologie forme: inputForme.

morphologie formeNue: inputFormeNue.

morphologie lemme: inputLemme.

(accord = '') || ( accord = nil)

ifTrue:[accord: globals gaspar categorieGaspar accord copy.

accord genre: globals gaspar categorieGaspar genre copy.

accord nombre: globals gaspar categorieGaspar nombre copy.

].

accord genre type_genre: inputGenre.

accord nombre type_nombre: inputNombre.

morphologie classe: inputClasse.

)

Nom du Slot: parentNumber

Contenu du Slot parentNumber : parentNumber = 0

Nom du Slot: parentNumber:

Contenu du Slot parentNumber: : parentNumber: = <-

Nom du Slot: parent0

Contenu du Slot parent0 : parent0* = an object

Ce slot est un ParentSlot

----------> Recherche des Slots Herites via ce Parent

--> Nom du Slot: parent

--> Contenu du Slot parent : parent* = traits clonable

--> Nom du Slot: categorie

--> Contenu du Slot categorie : categorie = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: categorie:

--> Contenu du Slot categorie: : categorie: = <-

--> Nom du Slot: elementaryTree

--> Contenu du Slot elementaryTree : elementaryTree = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: elementaryTree:

--> Contenu du Slot elementaryTree: : elementaryTree: = <-

--> Nom du Slot: complexTree

--> Contenu du Slot complexTree : complexTree = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: complexTree:

--> Contenu du Slot complexTree: : complexTree: = <-

--> Nom du Slot: displayLigne

--> Contenu du Slot displayLigne : displayLigne = '..................................................

'

--> Nom du Slot: displayDoubleLigne

--> Contenu du Slot displayDoubleLigne : displayDoubleLigne = '::::::::::::::::::::::::::::::::::::::::::::::::::

'

--> Nom du Slot: displayNewLine

--> Contenu du Slot displayNewLine : displayNewLine = '

'

--> Nom du Slot: displayPrototypeLexical

--> Contenu du Slot displayPrototypeLexical : displayPrototypeLexical = 'Prototype Lexical:

'

--> Nom du Slot: displayConstituants

--> Contenu du Slot displayConstituants : displayConstituants = 'Constituant:

'

--> Nom du Slot: displayCategorie

--> Contenu du Slot displayCategorie : displayCategorie = ' Categorie:

'

--> Nom du Slot: displayMorph

--> Contenu du Slot displayMorph : displayMorph = ' Morph:

'

--> Nom du Slot: displaySemantique

--> Contenu du Slot displaySemantique : displaySemantique = ' Semantique:

'

--> Nom du Slot: displayAccord

--> Contenu du Slot displayAccord : displayAccord = ' Accord: '

--> Nom du Slot: inside

--> Contenu du Slot inside : inside = 'Traits catAdj: comportements partages par tous les Adj'

--> Nom du Slot: display

--> Contenu du Slot display : display = (

('---------------CatAdj display-----------\n') printLine.

displayCategorie printLine.

categorie display.

displayMorph printLine.

morphologie display.

displayAccord printLine.

accord display.

('--------------- End display-----------\n') printLine.

)

--> Nom du Slot: file

--> Contenu du Slot file : file = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: file:

--> Contenu du Slot file: : file: = <-

--> Nom du Slot: uiDisplay:

--> Contenu du Slot uiDisplay: : uiDisplay: t = (

ui add: self At: t.

(semantique _Eq: nil)

ifFalse:[ ui show: 'semantique' On:reflect:self.

(0 to: ((semantique size) - 1)

Do: [ | :i |

(semantique at: i) uiDisplay: t.

]).

].

(morphologie _Eq: '')

ifFalse:[ ui show: 'morphologie' On:reflect:self.

"morphologie uiDisplay: t."

].

(catName _Eq: '')

ifFalse:[ui show: 'catName' On:reflect:self.

].

(accord _Eq: '')

ifFalse:[ui show: 'accord' On:reflect:self.

"accord uiDisplay:t."

].

)

--> Nom du Slot: displayOut:

--> Contenu du Slot displayOut: : displayOut: t = (

file: t.

file write: ('---------------CatAdj display-----------\n').

file write: displayCategorie.

categorie displayOut: file.

file write: displayMorph.

morphologie displayOut: file.

file write: displayAccord.

accord displayOut: file.

file write: ('--------------- End display-----------\n').

)

Nom du Slot: parent0:

Contenu du Slot parent0: : parent0: = <-

 

Le Prototype : <petite|Adj> a :

1 slot(s) de type parentSlot

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta:

A-3-9.2.5. Supprimer des liens de délégation

 

 

Dans l'exemple qui suit on utilise l'interface méta pour supprimer le lien de délégation créé supra entre le prototype <Adj: petite> et le prototype traits catAdj.

 

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta:4

-------------------------------------------------------

-----------------------------------------------------------------------------------------------

Quel type de prototype pour la selection

1. Prototypes/Arbres Construits (recherche sur forme lexicale)

2. Prototypes/Arbres Non Construits (recherche sur Categorie)

3. Tout type de Prototypes/Arbres

Votre Choix: 1

Recherche d'un Arbre Elementaire Construit

-------------------------------------------

Forme de l'Arbre Elementaire Cherche: petite

Categorie de tete de l'Arbre Elementaire Cherche: Adj

-----------------------------------------------------------------------------------------------

Prototype : ['petite'|'Adj']

Selection de ce prototype

(repondre par y ou Y): y

----------------------------------------------------------------------------------------------

------------------------------------------------------------------

Description des Slots Parents et Herites du Prototype : <petite|Adj>

------------------------------------------------------------------

Nom du Slot: parent

Contenu du Slot parent : parent* = an object

Ce slot est un ParentSlot

----------> Recherche des Slots Herites via ce Parent

--> Nom du Slot: parent

--> Contenu du Slot parent : parent* = traits clonable

--> Nom du Slot: categorie

--> Contenu du Slot categorie : categorie = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: categorie:

--> Contenu du Slot categorie: : categorie: = <-

--> Nom du Slot: elementaryTree

--> Contenu du Slot elementaryTree : elementaryTree = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: elementaryTree:

--> Contenu du Slot elementaryTree: : elementaryTree: = <-

--> Nom du Slot: complexTree

--> Contenu du Slot complexTree : complexTree = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: complexTree:

--> Contenu du Slot complexTree: : complexTree: = <-

--> Nom du Slot: displayLigne

--> Contenu du Slot displayLigne : displayLigne = '..................................................

'

--> Nom du Slot: displayDoubleLigne

--> Contenu du Slot displayDoubleLigne : displayDoubleLigne = '::::::::::::::::::::::::::::::::::::::::::::::::::

'

--> Nom du Slot: displayNewLine

--> Contenu du Slot displayNewLine : displayNewLine = '

'

--> Nom du Slot: displayPrototypeLexical

--> Contenu du Slot displayPrototypeLexical : displayPrototypeLexical = 'Prototype Lexical:

'

--> Nom du Slot: displayConstituants

--> Contenu du Slot displayConstituants : displayConstituants = 'Constituant:

'

--> Nom du Slot: displayCategorie

--> Contenu du Slot displayCategorie : displayCategorie = ' Categorie:

'

--> Nom du Slot: displayMorph

--> Contenu du Slot displayMorph : displayMorph = ' Morph:

'

--> Nom du Slot: displaySemantique

--> Contenu du Slot displaySemantique : displaySemantique = ' Semantique:

'

--> Nom du Slot: displayAccord

--> Contenu du Slot displayAccord : displayAccord = ' Accord: '

 

--> Contenu du Slot inside : inside = 'Traits catAdj: comportements partages par tous les Adj'

--> Nom du Slot: display

--> Contenu du Slot display : display = (

('---------------CatAdj display-----------\n') printLine.

displayCategorie printLine.

categorie display.

displayMorph printLine.

morphologie display.

displayAccord printLine.

accord display.

('--------------- End display-----------\n') printLine.

)

--> Nom du Slot: file

--> Contenu du Slot file : file = an object

--> Ce slot est un AssignableSlot

--> Nom du Slot: file:

--> Contenu du Slot file: : file: = <-

--> Nom du Slot: uiDisplay:

--> Contenu du Slot uiDisplay: : uiDisplay: t = (

ui add: self At: t.

(semantique _Eq: nil)

ifFalse:[ ui show: 'semantique' On:reflect:self.

(0 to: ((semantique size) - 1)

Do: [ | :i |

(semantique at: i) uiDisplay: t.

]).

].

(morphologie _Eq: '')

ifFalse:[ ui show: 'morphologie' On:reflect:self.

"morphologie uiDisplay: t."

].

(catName _Eq: '')

ifFalse:[ui show: 'catName' On:reflect:self.

].

(accord _Eq: '')

ifFalse:[ui show: 'accord' On:reflect:self.

"accord uiDisplay:t."

].

)

--> Nom du Slot: displayOut:

--> Contenu du Slot displayOut: : displayOut: t = (

file: t.

file write: ('---------------CatAdj display-----------\n').

file write: displayCategorie.

categorie displayOut: file.

file write: displayMorph.

morphologie displayOut: file.

file write: displayAccord.

accord displayOut: file.

file write: ('--------------- End display-----------\n').

)

 

-------------------------

Suppression de cet attribut parent

(repondre par y ou Y): y

-------------------------

 

Nom du Slot: protoBuilt

Contenu du Slot protoBuilt : protoBuilt = true

Nom du Slot: protoBuilt:

Contenu du Slot protoBuilt: : protoBuilt: = <-

Nom du Slot: protoToBuild

Contenu du Slot protoToBuild : protoToBuild = an object

Nom du Slot: protoToBuild:

Contenu du Slot protoToBuild: : protoToBuild: = <-

Nom du Slot: elemTree

Contenu du Slot elemTree : elemTree = an object

Nom du Slot: elemTree:

Contenu du Slot elemTree: : elemTree: = <-

Nom du Slot: listCat_ElemTree

Contenu du Slot listCat_ElemTree : listCat_ElemTree = an object

Nom du Slot: listCat_ElemTree:

Contenu du Slot listCat_ElemTree: : listCat_ElemTree: = <-

Nom du Slot: compTree

Contenu du Slot compTree : compTree = an object

Nom du Slot: compTree:

Contenu du Slot compTree: : compTree: = <-

Nom du Slot: treeUp

Contenu du Slot treeUp : treeUp = an object

Nom du Slot: treeUp:

Contenu du Slot treeUp: : treeUp: = <-

Nom du Slot: treeDown

Contenu du Slot treeDown : treeDown = an object

Nom du Slot: treeDown:

Contenu du Slot treeDown: : treeDown: = <-

Nom du Slot: roleTree

Contenu du Slot roleTree : roleTree = 'TermTree'

Nom du Slot: roleTree:

Contenu du Slot roleTree: : roleTree: = <-

Nom du Slot: elts

Contenu du Slot elts : elts = a list('Adj')

Nom du Slot: elts:

Contenu du Slot elts: : elts: = <-

Nom du Slot: nbElts

Contenu du Slot nbElts : nbElts = 1

Nom du Slot: nbElts:

Contenu du Slot nbElts: : nbElts: = <-

Nom du Slot: morphologie

Contenu du Slot morphologie : morphologie = an object

Nom du Slot: morphologie:

Contenu du Slot morphologie: : morphologie: = <-

Nom du Slot: catName

Contenu du Slot catName : catName = 'Adj'

Nom du Slot: catName:

Contenu du Slot catName: : catName: = <-

Nom du Slot: semantique

Contenu du Slot semantique : semantique = a list

Nom du Slot: semantique:

Contenu du Slot semantique: : semantique: = <-

Nom du Slot: addSemantique:

Contenu du Slot addSemantique: : addSemantique: t = ( semantique addLast: t)

Nom du Slot: accord

Contenu du Slot accord : accord = an object

Nom du Slot: accord:

Contenu du Slot accord: : accord: = <-

Nom du Slot: checkStructure

Contenu du Slot checkStructure : checkStructure = true

Nom du Slot: checkStructure:

Contenu du Slot checkStructure: : checkStructure: = <-

Nom du Slot: resultCopy

Contenu du Slot resultCopy : resultCopy = an object

Nom du Slot: resultCopy:

Contenu du Slot resultCopy: : resultCopy: = <-

Nom du Slot: copy

Contenu du Slot copy : copy = (

resultCopy: clone.

resultCopy protoToBuild: nil.

resultCopy morphologie: globals gaspar categorieGaspar morphologie copy.

resultCopy semantique: list copy.

(semantique = nil) || (semantique size = 0) || (semantique = '')

ifFalse:[(0 to: ((semantique size) - 1)

Do:[ | :i |

resultCopy semantique addLast:

(semantique at:i) copy.

]).

].

(accord = nil) || [accord = '']

ifTrue:[

resultCopy accord: gaspar categorieGaspar accord copy.

resultCopy accord genre: gaspar categorieGaspar genre copy.

resultCopy accord nombre: gaspar categorieGaspar nombre copy.

]

False:[resultCopy accord: accord copy.

resultCopy accord genre: accord genre copy.

resultCopy accord nombre: accord nombre copy.

].

resultCopy.

)

Nom du Slot: inputSemantique

Contenu du Slot inputSemantique : inputSemantique = an object

Nom du Slot: inputSemantique:

Contenu du Slot inputSemantique: : inputSemantique: = <-

Nom du Slot: inputMorph

Contenu du Slot inputMorph : inputMorph = an object

Nom du Slot: inputMorph:

Contenu du Slot inputMorph: : inputMorph: = <-

Nom du Slot: inputForme

Contenu du Slot inputForme : inputForme = an object

Nom du Slot: inputForme:

Contenu du Slot inputForme: : inputForme: = <-

Nom du Slot: inputLemme

Contenu du Slot inputLemme : inputLemme = an object

Nom du Slot: inputLemme:

Contenu du Slot inputLemme: : inputLemme: = <-

Nom du Slot: inputFormeNue

Contenu du Slot inputFormeNue : inputFormeNue = an object

Nom du Slot: inputFormeNue:

Contenu du Slot inputFormeNue: : inputFormeNue: = <-

Nom du Slot: inputGenre

Contenu du Slot inputGenre : inputGenre = an object

Nom du Slot: inputGenre:

Contenu du Slot inputGenre: : inputGenre: = <-

Nom du Slot: inputNombre

Contenu du Slot inputNombre : inputNombre = an object

Nom du Slot: inputNombre:

Contenu du Slot inputNombre: : inputNombre: = <-

Nom du Slot: inputClasse

Contenu du Slot inputClasse : inputClasse = an object

Nom du Slot: inputClasse:

Contenu du Slot inputClasse: : inputClasse: = <-

Nom du Slot: checkSemDescription:

Contenu du Slot checkSemDescription: : checkSemDescription: t = (

(t = nil) ifTrue:[ inputSemantique: list copy.]

False:[ inputSemantique: t.].

)

Nom du Slot: checkMorphDescription:

Contenu du Slot checkMorphDescription: : checkMorphDescription: t = (

(t = nil) ifTrue:[ inputMorph: list copy.]

False:[ inputMorph: t.].

(inputMorph size = 0)

ifTrue:[

inputForme: '-'.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size = 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: '-'.

inputLemme: '-'.

inputGenre: '-'.

inputNombre: '-'.

inputClasse: '-'.

].

(inputMorph size != 0) && (inputMorph size != 1)

ifTrue:[

inputForme: inputMorph at: 0.

inputFormeNue: (inputMorph at: 1) at: 0.

inputLemme: (inputMorph at: 1) at: 1.

inputGenre: (inputMorph at: 1) at: 2.

inputNombre: (inputMorph at: 1) at: 3.

inputClasse: (inputMorph at: 1) at: 4.

].

morphologie forme: inputForme.

morphologie formeNue: inputFormeNue.

morphologie lemme: inputLemme.

(accord = '') || ( accord = nil)

ifTrue:[accord: globals gaspar categorieGaspar accord copy.

accord genre: globals gaspar categorieGaspar genre copy.

accord nombre: globals gaspar categorieGaspar nombre copy.

].

accord genre type_genre: inputGenre.

accord nombre type_nombre: inputNombre.

morphologie classe: inputClasse.

)

 

Le Prototype : <petite|Adj> a :

0 slot(s) de type parentSlot

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta:

A-3-9.2.6. Maintenir une cohérence dans les savoirs représentés

 

 

Dans l'exemple qui suit on utilise l'interface méta pour rechercher tous les objets définis via Gaspar. On examine ensuite leur structure interne et soit on garde ces objets (leur structure est cohérente) soit on les détruit (leur structure n'est pas complète). En fait chaque objet défini via Gaspar est porteur dès sa contruction d'un attribut qui indiquera la cohérence de l'objet visé. C'est cet attribut qui est scruté ici.

 

 

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta:15

-------------------------------------------------------

Recherche des Objets Gaspar

---------------------------

 

Nombre d'objets Gaspar definis correctement : 180

Nombre d'objets Gaspar Poubellises : 60

Gaspar is going to kill !!! Keep Cool...

Kill(0) in Progress....

Kill(59) is done!

 

Nombre d'objets Gaspar definis correctement : 180

Nombre d'objets Gaspar Poubellises : 60

-------------------------------------------------------

<1: Display Meta Rules>

<2: Display Bugs Report>

<3: Build Delegation>

<4: Remove Delegation>

<5: Build Prototypes>

<6: Look For Delegation>

<7: Meta Trace>

<8: Add Meta Rule>

<9: Remove Meta Rule>

<10: Add Bugs Report>

<11: Remove Bugs Report>

<12: Display Slot Of Selected Prototypes>

<13: Menu AddSlots>

<14: Compteur de Formes lexicales>

<15: Empty Waste Gaspar>

Select a number or q to quit MenuMeta: