Cliquez sur un bouton pour naviguer

5. Notes de réalisation

Version : 1.1
  Publication :  

Octobre 1999

  e-mail :   Vassili Bykov <vassili@magma.ca>, <vassili@objectpeople.com>
  e-mail pour les critiques :   /dev/null

[CU: Porté vers Dolphin Smalltalk, le 23 octobre 1999, par Chris Uppal]

LES AJOUTS

Le comparateur comprend des classes rangées selon 2 catégories :

  VB-Regex-Syntax
  VB-Regex-Matcher


[CU: et aussi RxError et ses descendantes, toutes dans la catégorie VB-RegexExceptions] et quelques méthodes propres aux chaînes dans le protocole VB-regex. Aucune classe système ou méthode modifiées.

OÙ CHERCHER EN PREMIER

String>>matchesRegex: -- dans 90% des cas vous n'aurez pas besoin d'une autre méthode pour utiliser le paquetage.

RxParser -- accepte une chaîne ou un flux de caractères comprenant une expression régulière et produit un arbre syntaxique correspondant à l'expression. Cet arbre est composé d'instances des classe Rxs<quelque chose>.

RxMatcher -- accepte l'arbre syntaxique d'une expression régulière créé par l'analyseur (RxParser) et le compile en un comparateur (matcher) : une structure composée d'instances des classe Rxm<quelque chose>. L'instance de RxMatcher peut tester si une chaîne ou un flux positionnable de caractères correspond à l'expression régulière, ou bien recherche dans une chaîne ou un flux des sous-chaînes correspondant à l'expression. Après une correspondance, le comparateur peur renvoyer une chaîne donnée qui concorde avec l'expression entière une sous-expression isolée par des parenthèses.

Toutes les autres classes supportent les fonctionnalités décrites ci-dessus et sont utilisées par RxParser, RxMatcher ou les 2.

AVERTISSEMENT

Ce comparateur (matcher) est similaire dans l'esprit mais pas dans la conception, je ne parle même pas du code, à la réalisation originale en C de Henry Spencer. L'accent a été mis sur la simplicité et non sur l'efficacité. Je n'ai pas optimisé ou profilé quoi que ce soit. Je le ferai peut être plus tard, ou je ne le ferai pas : je fais ça pendant mes loisirs et donc je ne promets rien.

Le comparateur passe le jeu de test de Henry Spencer (voir le protocole 'test suite') après y avoir ajouté quelques tests complémentaires. Il y a donc de fortes chances pour qu'il n'y ai pas beaucoup de bugs. Soyez quand même attentifs.

EXTENSIONS, DÉVELOPPEMENT FUTURS, ETC.

Grâce à la séparation existant entre l'analyseur (parser), l'arbre syntaxique et le comparateur (matcher), il est facile d'étendre le système avec d'autres comparateurs fondés sur d'autres algorithme. En fait j'ai déjà un comparateur DFA fonctionnel mais je ne le trouve pas assez bon pour l'inclure ici. Je devrais ajouter des comparateurs fondés sur des automates d'état plus tard mais comme je l'ai déjà dit, je ne promets rien.

COMMENT ME JOINDRE

Aujourd'hui (le 3 octobre 1999), vous pouvez me contacter à l'adresse <vassili@objectpeople.com>. Si ça ne marche pas, cherchez du côté de comp.lang.smalltalk et comp.lang.lisp.

[CU. Et moi je suis chris.uppal@metagnostic.org]

Dernière modification le 18-03-2006