Référence de rédaction ExpandaEVE
ExpandaEVE est la forme lisible du langage EVE. C’est ce que vous écrivez dans un fichier de filtre .eve. Chaque construction ici est traduite en CompactaEVE puis compilée. Cette page documente chaque construction avec de vrais exemples tirés des fichiers de filtre livrés.
Pour les directives de niveau document (DEFINE, LET, REALM, les énoncés de règle), voir Le langage EVE. Cette page concerne le corps d’une règle floue : le motif lui-même.
La forme d’un corps de règle
Un corps de règle floue a toujours une racine et peut ajouter un nombre quelconque de constructions autour d’elle. La racine est le mot radical sur lequel la règle est bâtie. Tout le reste l’affine : suffixes, gestion du pluriel, exclusions, contexte, et ainsi de suite.
HEAR rule
AS
fuck(WHOLE)
suffix(NONE OR er OR ers OR ing OR ed OR s)
FLAG(pf YES)Ici fuck(WHOLE) est la racine, suffix(...) ajoute les terminaisons autorisées, et FLAG(pf YES) étiquette la catégorie. Les constructions peuvent apparaître dans n’importe quel ordre qui se lit naturellement ; le traducteur reconnaît chacune par son mot-clé.
La racine et ses marqueurs de frontière
La racine est l’ancre d’une règle. Un seul marqueur de racine fixe la rigueur avec laquelle la correspondance est délimitée à la racine :
| Marqueur | Signification |
|---|---|
(WHOLE) |
La racine doit correspondre comme un mot entier. Le candidat commence par le radical de la racine et le parcours entier court jusqu’à une frontière de mot. Écrit [^^] en CompactaEVE. |
(ROOT) |
La racine est un radical sur lequel les suffixes et les groupes s’appuient. Elle n’a pas à être un mot entier à elle seule. Écrit [*^] en CompactaEVE. |
Utilisez (WHOLE) lorsque le mot nu est lui-même l’infraction :
spic(WHOLE)
PLURALUtilisez (ROOT) lorsque vous attacherez des terminaisons ou des groupes de fin :
ni(ROOT)
suffix(g OR ga OR gga OR gger OR gl LETTER t)
PLURALChaque règle floue a besoin d’un marqueur de racine
Un corps de règle sans marqueur (WHOLE) ou (ROOT) ne peut pas se compiler. Le marqueur est ce qui sépare le radical de la racine du reste du motif.
La correspondance floue est automatique
Une racine floue n’est pas un test de chaîne littérale. Le matcheur tolère déjà l’évitement courant : les voyelles sont interchangeables via l’ensemble de voyelles, les lettres peuvent être étirées, et les gaps (voir GAP) laissent passer les caractères insérés là où vous l’autorisez. Vous n’activez pas cela ; c’est ainsi que les règles floues correspondent. Pour attraper un plus large éventail de fautes d’orthographe délibérées, ajoutez des alias et des squelettes.
suffix : terminaisons autorisées
suffix(...) liste les terminaisons que le mot peut prendre après la racine. Les branches sont séparées par OR. Un seul groupe de suffixe est nécessaire, mais vous pouvez en empiler plusieurs ; chacun ajoute un segment facultatif dans l’ordre.
bitch(WHOLE)
suffix(NONE OR es OR ed OR ing OR y OR ier OR iest OR fest OR fests)NONE signifie que la terminaison est facultative : le mot peut se terminer juste à la racine. Sans branche NONE, le suffixe est requis.
Les groupes de suffixe se composent de gauche à droite, de sorte que plusieurs à la suite construisent une chaîne de segments facultatifs :
fa(ROOT)
suffix(g OR gg OR NONE)
suffix(ggot OR NONE)
suffix(ggie OR NONE)Une branche de suffixe peut elle-même contenir GAP ou LETTER (voir GAP et LETTER) :
suffix(g OR ga OR gga OR gger OR gl LETTER t) suffix(my GAP OR NONE)PLURAL
PLURAL ajoute un riche ensemble de terminaisons de pluriel et de flexion en un seul mot. Il s’étend en la classe s intégrée de terminaisons, de sorte qu’une règle étiquetée PLURAL attrape aussi -s, -z, -es, -ing, -ed, -er, -y, et les autres membres déclarés dans la fonction s.
dyke(WHOLE)
PLURALPLURAL lit la classe nommée s. Le filtre anglais livré la déclare ainsi :
LET function(s) BE s OR z OR es OR ez OR ies OR iez OR y>ies OR y>iez OR ing OR ings OR ed OR er OR ers OR y OR ysUne branche écrite from>to est une terminaison de réécriture : elle correspond à un mot se terminant par to en testant la racine avec la terminaison from à la place. y>ies attrape un mot se terminant par ies comme s’il se terminait par y, ce qui permet d’atteindre baby et babies depuis une seule racine. Voir Suffixes de réécriture pour les mécanismes.
NEVER : exclusions
NEVER(...) liste les phrases qui ne doivent pas apparaître dans la ligne environnante. Si une phrase listée est présente, la règle ne se déclenche pas, même si le motif correspond autrement. C’est ainsi qu’une racine agressive est empêchée d’attraper des mots innocents.
wop(WHOLE)
PLURAL
NEVER(doowop OR doo wop OR doowap OR doo wap OR dowap OR do wap OR do wop) gook(WHOLE)
PLURAL
NEVER(600k OR 900k OR 60ok OR 90ok OR 6ook OR 9ook OR 600ks OR 900ks)Une vérification NEVER est un test de sous-chaîne simple contre la ligne entière, en minuscules. Si la phrase est où que ce soit dans le message, la règle fait l’objet d’un veto.
ALIAS : orthographes alternatives
ALIAS(...) ajoute une orthographe alternative de la racine. Chaque alias est une variante de racine distincte qui réutilise le reste de la règle (ses suffixes, groupes, exclusions). Listez un alias par ligne pour couvrir les fautes d’orthographe délibérées et les échanges de lettres.
ALIAS(phuck)
ALIAS(fuk)
ALIAS(fukk)
ALIAS(fucc)
ALIAS(fck)
ALIAS(fk)
fuck(WHOLE)
suffix(NONE OR er OR ers OR ing OR ed OR s)Chaque alias ici correspond avec le même ensemble de suffixes que fuck. Un alias peut porter son propre marqueur (WHOLE) ou (ROOT) ; sans, il hérite de la frontière de la racine.
Un alias peut référencer une fonction, auquel cas chaque membre de cette fonction devient un alias :
ALIAS(function(selfharmverb))
kill(ROOT)Un alias peut aussi être un mot segmenté ou un fragment multi-parties ; il est normalisé de la même manière que la racine.
ALSO : fragments additifs
ALSO(...) ajoute un fragment qui peut apparaître n’importe où après la racine plutôt que dans un ordre fixe. Il est utilisé lorsqu’un mot supplémentaire requis peut flotter par rapport au radical.
kill(ROOT)
GAP
suffix(yo OR ur OR your OR yor)
suffix(self)
ALSO(wrists OR wrist OR throat)ALSO s’abaisse en un groupe flottant qui s’attache à toute position atteignable après la racine et les groupes normaux. Voir Groupes plus pour la manière dont un groupe flottant est apparié.
GAP et LETTER
Ces raccourcis contrôlent ce qui peut se placer entre les parties d’un motif.
| Construction | Signification | CompactaEVE |
|---|---|---|
GAP |
Une suite facultative de caractères quelconques (lettres ou non-lettres), de sorte que les espaces, la ponctuation ou le remplissage insérés sont tolérés. | (#*) |
LETTERS |
Une suite facultative de lettres uniquement. | ($^) |
LETTER |
Exactement un caractère de matière de mot. | @ |
GAP entre une racine et un suffixe permet à une phrase de s’étaler sur plusieurs mots :
moon(ROOT)
GAP
suffix(cricket)
PLURALCeci attrape moon cricket, mooncricket, et les orthographes avec du remplissage entre les deux parties. LETTER correspond à un caractère unique, utile à l’intérieur d’une branche de suffixe pour autoriser une position joker :
suffix(m LETTER GAP OR NONE)LETTERS correspond à une suite de lettres uniquement, il s’arrête donc à un espace :
my(ROOT)
GAP
LETTERS
GAP
suffix(hit)Ce qui compte comme lettre
La matière de mot est une lettre ASCII ou tout octet d’un glyphe non ASCII, de sorte qu’une suite d’emojis ou de symboles compte aussi comme matière de mot pour les frontières et le joker LETTER. Le texte ASCII brut n’est pas affecté.
OR et NONE
OR sépare les alternatives à l’intérieur d’une construction telle que suffix(...), NEVER(...), ALSO(...), BEFORE(...) et AFTER(...), et il sépare les membres de classe dans une déclaration LET. Il doit se tenir comme un mot entier.
NONE est une alternative vide. Dans un suffixe, il rend la terminaison facultative ; dans une liste de membres de fonction, il permet à la classe de contribuer une correspondance vide :
LET function(quantifier) BE NONE OR some OR any OR a OR an OR theBEFORE et AFTER : conditionnement contextuel
Ceux-ci conditionnent une règle sur du texte ailleurs dans la ligne. Ils sont utilisés pour faire qu’un terme autrement large ou ambigu ne se déclenche que dans un contexte révélateur.
| Construction | Signification | CompactaEVE |
|---|---|---|
BEFORE(...) |
Un contrôle en amont. La règle ne s’active que lorsqu’une des phrases listées apparaît dans la ligne environnante. | {pre:...} |
AFTER(...) |
Une condition en aval. Des terminaisons autorisées qui permettent à la règle de se déclencher sur le mot lui-même même sans phrase de contrôle en amont présente. | {post:...} |
BEFORE(function(seeking))
cp
AFTER(mega OR pack OR packs OR nz OR db OR dropbox OR folder OR vids OR pics)
(WHOLE)Une phrase BEFORE est une vérification de sous-chaîne simple contre la ligne entière, en minuscules. Lorsqu’une règle a un contrôle en amont BEFORE, elle reste inerte à moins que l’une des phrases ne soit présente, ou que le mot ne satisfasse à lui seul la condition en aval AFTER. AFTER accepte un s pluriel de fin sur ses terminaisons. Voir Conditionnement pour la règle exacte.
SWAP : ensemble de substitution en ligne
SWAP(...) correspond à un fragment parmi plusieurs petits à une position, avec un contrôle des frontières de mot. Il est utilisé là où un court morceau interchangeable se trouve à l’intérieur d’une phrase.
kill(ROOT)
GAP
SWAP(my* OR me*)
suffix(self)Chaque branche peut porter des astérisques qui libèrent une frontière :
- Un
*de tête libère le début (la branche n’a pas à commencer à une frontière de mot). - Un
*de fin libère la fin. - Aucun astérisque, ou un double
**de tête, ancre les deux côtés à une frontière de mot.
Ainsi my* correspond à my avec une frontière requise avant lui mais pas nécessairement après, lui permettant de courir jusque dans self. Voir Swaps pour les règles de frontière en entier.
SKELETON : orthographes exactes
SKELETON(...) liste les formes de mots exactes que la règle apparie aussi directement, contournant le matcheur flou. Il est utilisé pour verrouiller des orthographes obfusquées spécifiques à l’aide de listes de choix en ligne.
ni(ROOT)
suffix(g OR ga OR gga OR gger OR gl LETTER t)
PLURAL
NEVER(snigger OR sniggers OR sniggered)
SKELETON(n[a,e,i,o,u]gg[a,e,i,o,u]r OR n[a,e,i,o,u]gg[a,e,i,o,u]h)Un squelette est étendu en l’ensemble complet de mots concrets qu’il peut épeler, et tout candidat égal à l’un de ces mots correspond immédiatement. L’expansion prend le produit croisé de chaque choix, de sorte que n[a,e,i,o,u]gg[a,e,i,o,u]r produit naggar, neggar, niggar, et ainsi de suite pour chaque paire de voyelles.
Listes de choix en ligne
À l’intérieur d’un squelette, [a,e,i,o,u] est une liste de choix en ligne : une position de caractère qui peut être l’un des membres séparés par une virgule. Les membres peuvent comporter plus d’un caractère. Les espaces autour d’un membre sont supprimés. Un squelette peut aussi référencer une fonction avec &name, qui s’étend en les membres de cette fonction.
SKELETON(r[e,i]t[a,e,i]rd) SKELETON(m[a,e,i,o,u]st[a,e,i,o,u]rb[a,e,i,o,u]t OR m[a,e,i,o,u]st[a,e,i,o,u]rb[a,e,i,o,u]t[a,e,i,o,u])Le résultat est en minuscules. Les squelettes correspondent à l’orthographe exacte, ils sont donc complémentaires à la racine floue, qui gère les variantes plus lâches.
FUNCTION : classes nommées
Une fonction est une classe nommée déclarée avec LET (voir Le langage EVE). Elle est référencée avec function(name), et la référence s’étend en les membres de la classe. Les fonctions ont plusieurs rôles selon l’endroit où elles apparaissent.
Comme groupe entier d’alternatives dans un corps de règle :
groom(ROOT)
suffix(NONE OR ing OR ed)
GAP
MAYBE function(declarative)
GAP
function(vulnerable)Comme alias, où chaque membre devient une racine alternative :
ALIAS(function(genderword))
internal
GAP
condom(WHOLE)À l’intérieur d’une liste suffix, NEVER, ALSO, BEFORE ou AFTER, où les membres rejoignent les alternatives :
suffix(function(article) OR box of OR a box of OR internal OR function(genderword) OR NONE)Modificateurs de fonction
Une référence function(...) peut porter des modificateurs, joints par + :
| Modificateur | Effet | CompactaEVE |
|---|---|---|
ADDITIVE |
La référence est un ajout flottant à la correspondance plutôt qu’une exigence d’ordre fixe. | s’enveloppe en un groupe plus [+[...]] |
GAP |
La référence correspond de manière lâche, autorisant un gap après elle. | ajoute (#*) |
function(subject + ADDITIVE + GAP)
function(desire + ADDITIVE + GAP)
function(quantifier + ADDITIVE + GAP)
rap(ROOT)
suffix(e OR ist OR ed OR ing OR eable OR able)
PLURALChaque fonction additive ici flotte dans la correspondance là où elle s’ajuste, de sorte que les mots de sujet, de désir et de quantificateur peuvent apparaître dans un ordre variable avant la racine.
MAYBE FUNCTION : fonction facultative
MAYBE FUNCTION(name) rend une référence de fonction facultative : la correspondance réussit qu’un de ses membres soit présent ou non.
rap(ROOT)
suffix(NONE OR e OR es OR ed OR ing OR eing OR in OR ist OR ists)
GAP
MAYBE function(declarative)
GAP
function(vulnerable)Ici function(declarative) (des mots comme a, the, my) peut apparaître ou non entre le verbe et le mot de personne vulnérable.
FLAG : règles conditionnelles et étiquetage de catégorie
FLAG(name YES) étiquette la règle avec un flag déclaré. Lorsque la règle se déclenche, ce flag est activé, ce qui est la manière dont le filtre rapporte une catégorie telle que l’automutilation ou l’abus plutôt qu’un blocage ordinaire.
kms(WHOLE)
FLAG(sh YES)La valeur peut s’écrire YES, Y ou TRUE pour activé, et n’importe quoi d’autre pour désactivé. Le nom du flag doit être déclaré avec DEFINE (voir Le langage EVE), sinon le document échoue au chargement. En interne, un flag enveloppe le motif dans une porte conditionnelle ; voir Enveloppes de flag.
NOTE : commentaires
NOTE(...) attache un commentaire en ligne. Il est retiré avant la compilation et n’affecte pas la correspondance, c’est donc un moyen d’annoter un motif sur place. Les commentaires de ligne entière utilisent toujours un # de tête.
ALIAS avec marqueurs WHOLE ou ROOT
Un alias peut se terminer par (WHOLE) ou (ROOT) pour fixer sa propre frontière, indépendamment de celle de la racine :
ALIAS(dike)
dyke(WHOLE)Sans marqueur de fin, l’alias hérite du marqueur de frontière de la racine.
Racines segmentées
Une racine peut être écrite comme plusieurs morceaux entre crochets et nus pour marquer une partie comme fléchissable. Lorsqu’au moins deux morceaux sont présents et qu’au moins un est entre crochets, ils se fondent en une seule racine avec des points d’entrée alternatifs.
re[tard] (WHOLE)
suffix(NONE OR d OR ded OR ted OR t OR der OR ders OR ing OR ed OR s)Le morceau entre crochets marque le segment fléchissable. Voir Racines segmentées pour savoir exactement quelles alternatives sont générées.
En les assemblant
Une règle réaliste combine plusieurs constructions :
HEAR rule
AS
ALIAS(masterb)
masturb(ROOT)
suffix(ate OR ating OR ation OR ated OR ates OR at)
SKELETON(m[a,e,i,o,u]st[a,e,i,o,u]rb[a,e,i,o,u]t OR m[a,e,i,o,u]st[a,e,i,o,u]rb[a,e,i,o,u]t[a,e,i,o,u])Cette règle a un alias pour une faute d’orthographe courante, une racine avec un ensemble de suffixes fixe, et des squelettes pour les orthographes leetspeak que le matcheur flou pourrait manquer. Lisez CompactaEVE pour voir comment chacun de ces éléments s’abaisse et correspond.