Passer au contenu principal
Lorsque vous créez un élément et configurez ses propriétés dans le panneau Properties, le programme génère automatiquement du code pour ces propriétés. Cette section vous aidera à comprendre ce code généré automatiquement, afin de pouvoir le modifier si nécessaire.

Structure de l’élément de recherche

Exemple de structure de l’élément de recherche Le code généré automatiquement pour l’élément de recherche Parties.Address sera le suivant :

Règle auto-générée

~Root.Parties.Address,
t1 : Root.Parties.Organization,
t2 : Root.kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Root.Parties.Address ]+
=>
Root.Parties.Address( t );
Comme vous pouvez le constater, le code généré automatiquement fait toujours référence à chaque élément de recherche en utilisant le chemin complet afin d’éviter tout conflit de noms. Dans ce cas, nous pouvons raccourcir les noms des éléments en supprimant Root de chacun.

Règle avec des noms d’élément plus courts

~Parties.Address,
t1 : Parties.Organization,
t2 : kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );
Nous pouvons maintenant détailler la signification de chaque instruction :

Explication de la règle

// Vérifier que l'élément de recherche Address n'a pas encore été trouvé, car seule la première instance est nécessaire
~Parties.Address,
// Récupérer l'élément de recherche Organization et l'élément de recherche par mot-clé de la partie suivante. Ils ont été trouvés avant Address
t1 : Parties.Organization,
t2 : kw_PreNextParty
// Trouver la séquence de jetons contenant une entité nommée NERAddress
// (le mot-clé "same" spécifie qu'un seul NERAddress doit être associé s'il y en a plusieurs)
// L'adresse doit être située après le nom de l'organisation et avant le mot-clé de la partie suivante
// Le signe + signifie que la séquence de jetons peut être composée de plusieurs mots
// La condition ~@Parties.Address à la fin garantit
// que l'adresse ne sera pas associée à nouveau aux mêmes jetons
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );