1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297
|
Dernire modification: 20/07/1999, 11:04
-------- 01/08/1998 tcLex version 1.0 --------
-------- 02/09/1998 tcLex version 1.0p1 --------
1. Bug potentiel corrig quand un lexeur global tait cr partir d'un
namespace. Par exemple :
namespace eval foo {
lexer ::bar::baz ...
}
La commande cre tait ::foo::bar::baz au lieu de ::bar::baz. De plus, la
valeur de retour est maintenant le nom complet (comme pour proc) et non le nom
spcifi (relatif au namespace).
2. Bug majeur corrig dans le traitement incrmental. Utilis avec le rejet de
rgle, certaines rgles taient incorrectement ignores. Cette correction
apporte aussi une amlioration des performances lors du traitement incrmental.
3. Coquilles mineures corriges dans la documentation : l'exemple montrant la
diffrence entre conditions inclusive et exclusive tait incorrect.
4. Erreur de syntaxe corrige dans le fichier pkgIndex.tcl par dfaut fourni
avec la version prcdente. Ce fichier ne marchait pas cause d'accolades en
trop :(. Heureusement "pkg_mkIndex" fonctionnait.
5. Ajout de fichiers de configuration pour Unix, grand merci John Ellson de
Lucent <ellson@lucent.com> pour ces fichiers !
6. Remplacement de "static const char*" par "static char*" certains endroits
pour viter des avertissement de compilation sur Unix. Merci John Ellson
<ellson@lucent.com> et Paul Vogel <vogel@cygnet.rsn.hp.com> de me l'avoir fait
remarquer.
7. Ajout de l'extension .txt tous les fichiers texte de la distribution. Ceci
facilite leur lecture sous Windows.
8. Ajout du prsent fichier (changements.txt)
-------- 11/11/1998 tcLex version 1.1a1 --------
1. Rcriture complte de l'interface de regexp. Une version modifie du moteur
regexp de Tcl est maintenant incluse dans le code. Bien que le code soit ainsi
lgrement plus gros, (le binaire fait quelques ko de plus), cela permet une
meilleure gestion des cas de dpassement de chane, qui taient une limite
majeure des versions prcdentes. Cela permet galement les regexps sensibles
aux lignes sous Tcl8.0 (voir ci-dessous). Ajout des fichiers tcLexRE.h et
tcLexRE.c -- qui son tour inclut RE80.c ou RE81.c (les moteurs de regexp
modifis) selon la version de Tcl.
2. Compltement retravaill le code de manipulation de chanes, afin de le
rendre propre par rapport Unicode sour Tcl8.1. Il stocke maintenant la
chane au format Unicode au lieu de UTF-8, afin que l'utilisation d'indices soit
plus facile (UTF-8 utilise des caractres de taille variable et donc ncessite
des procdures de parcours spcifiques). Apporte galement des amliorations
significatives avec les grandes chanes (avant, la chane UTF-8 entire tait
convertie en Unicode par le moteur regexp chaque essai de rgle).
3. Bug corrig avec index sous Tcl8.1 (la correction est en rapport avec les
changements ci-dessus). L'index retourn etait l'index en octets et non l'index
en caractres.
4. Fichier tcLexPrivate.h renomm tcLexInt.h pour plus de cohrence avec Tcl.
5. Ajout de l'option -args pour permettre le passage d'arguments
supplmentaires, en utilisant la mme syntaxe que proc. Par exemple :
lexer foo -args {a b {c 3}} ...
foo eval $string 1 2; # a=1, b=2, c=3 par dfaut
6. Ajout de l'option -lines pour le traitement sensible aux lignes. Ceci change
le comportement de "^$" et "." dans les regexps, et procure une faon portable
d'utiliser des regexps sensibles aux lignes (Tcl8.0 ne les supporte pas, et
Tcl8.1 ncessite une syntaxe particulire). L'implmentation a t rendue
possible par l'inclusion du code de regexp.
7. Ajout d'une structure TcLex_Buffer permettant des amliorations fututes :
diffrents types d'entres (chane, variable, fichier, "channel") ainsi que des
tampons d'entre multiples.
8. Rorganisation du code pour faciliter les amliorations futures.
9. La valeur de retour de "lexer" est maintenant une chane vide, comme avec
proc (contrairement ce que j'ai crit prcdemment).
10. Bug corrig d des dsallocations de mmoires excessives, merci Claude
BARRAS <barras@etca.fr>.
11. Ajout des sous-commandes "input" et "unput", suivant les suggestions de Neil
Walker <neil.walker@mrc-bsu.cam.ac.uk>. Elles sont similaires celles de flex,
input() et unput(), sauf que unput ne peut pas rinjecter des caractres
arbitraires dans la chane d'entre (c'est un choix de conception, pas une
limite technique).
-------- 19/11/1998 tcLex version 1.1a2 --------
1. Ajout de l'option -nocase pour l'insensibilit la casse. Sous Tcl8.0, cela
a ncessit une incursion plus profonde dans le code de regexp.
2. Ajout de l'option -longest pour choisir la plus longue identification
(longest prefered matching) (comme flex) plutt que la premire identification
(par dfaut).
3. Retravaill le code de rejet de rgle afin qu'il marche correctement et
efficacement avec -longest. Cela l'a aussi rendu plus sr.
-------- 25/11/1998 tcLex version 1.1a3 --------
1. Bug majeur corrig dans la modification du moteur regexp de Tcl8.0, causant
l'chec de certaines regexps (particulirement celles avec des sous-expressions
marques par ?). Par exemple, l'expression "a?b" reconnaissait la chane "b",
mais pas la chane "ab".
2. Ajout de sous-commandes "create" et "current" la commande lexer. La
premire est optionnelle et sert lors de la cration des lexeurs :
lexer ?create? <name> ?args ... args?
La seconde peut tre utilise pendant un traitement pour rcuprer le nom du
lexeur active courant, par exemple :
[lexer current] index
Cela vite d'utiliser le nom du lexeur partout, et est utile quand les lexeurs
sont renomms, aliass ou imports. Suggestion faite par Leo Schubert
<leo@bj-ig.de>. Ces nouvelles sous-commandes introduisent une incompatibilit
potentielle : les lexeurs ne peuvent plus tre nomms "create" ou "current"
(mais a ne devrait pas tre un problme).
-------- 18/12/1998 tcLex version 1.1b1 --------
1. TcLex est maintenant conu pour tre li Tcl8.0.4 ou Tcl8.1b1. Quelques
changements ont t apports aux fichiers sources pour prendre en compte de
nouvelles directives d'importation quand on compile des DLLs Windows
(introduites avec Tcl8.0.3).
2. Lgre modification du makefile.vc de Windows pour compiler les fichiers
objets dans des rpertoires distincts en fonction de certains paramtres (debug,
version de Tcl).
3. Le fichier RE81.c est maintenant bas sur le source de regexp de Tcl8.1b1.
4. Rcriture complte de la documentation. Elle inclut maintenant une
comparaison avec flex ainsi qu'une page de manuel classique. Elle utilise HTML +
CSS afin que les fureteurs rcents puissent afficher une prsentation amliore
tout en permettant aux fureteurs textuels d'afficher du texte formatt
correctement.
5. Ajout de plusieurs exemples, certains de Neil Walker (thanks, Neil!),
certains de moi (Frdric BONNET).
-------- 11/01/1999 tcLex version 1.1b2 --------
1. Ajout du point d'entre SafeTcl (Tclex_SafeInit).
2. Bug corrig qui semblait arriver uniquement sur certains systmes Unix (SGI
et Solaris) mais affectait de mme potentiellement d'autres systmes. Certains
lexeurs taient incorrectement signals comme inactifs mme quand retourns par
[lexer current]. La source de ce bug tait l'absence d'une borne infrieure dans
le dsallateur d'tat de lexeur (StateDelete) qui donnait aux tats suivant un
index ngatif, causant l'erreur "inactive lexer". Bug rapport par Claude BARRAS
et Neil Walker.
3. Bug corrig dans le moteur regexp corrig de Tcl8.0, qui faisait que les
retours chariot taient traits comme des caractres quelconques mme en mode
sensible aux lignes lorsqu'ils taient utiliss avec * ou +. Bug rapport par
Neil Walker.
4. Gestion de ^$ amliore en mode sensible aux lignes sous Tcl8.0 afin qu'ils
se comportent de la mme faon que sous Tcl8.1.
5. Bug corrig dans la gestion des chanes vides: certaines actions taient
appeles deux fois, une pour la chane identifie et une pour une chane vide
la fin de la prcdente.
6. Avertissements corrigs sous Unix, prcdemment rapports par Claude BARRAS
mais oublis dans la version prcdente: la structure regexec_state dans RE80.c
(moteur regexp corrig de Tcl8.0) tait utilise avant d'tre dfinie. Ces
avertissements taient silencieux sous Windows (niveau d'avertissement trop
bas?).
-------- 04/04/1999 tcLex version 1.1 finale --------
1. Coquille mineure corrige dans RE80.c : dans la fonction findChar, le
paramtre c tait dclar comme int* au lieu de int. Cela n'avait pas
d'influence (il tait transform en char de toute faon) mais gnrait des
avertissements avec certains compilateurs (pas le mien malheureusement )-:.
Rapport par Volker Hetzer <hetzer.abg@sni.de>.
2. TcLex est maintenant conu pour tre li Tcl8.0.4 (ou patchlevel suprieur)
ou Tcl8.1b2. Sur ce dernier, tcLex est configur par dfaut pour utiliser les
nouvelles fonctions de stubs. Seules quelques modifications mineures du code ont
t ncessaires. Tcl8.1b1 n'est plus du tout support.
3. Macros de compatibilit supprimes dans tcLexInt.h maintenant que les
anciennes fonctions sont de retour dans Tcl8.1b2.
4. Bug majeur corrig apparaissant avec les lexeurs prfrant la plus longue
chane reconnue ("longest-prefered matching lexers"). Quand plusieurs rgles
reconnaissaient le mme nombre de caractres, la dernire rgle dfinie tait
choisie au lieu de la premire, cause d'un mauvais oprateur de comparaison
('<' tait utilis la place de '<=' dans RuleTry). Cela cassait l'exemple
"pascal".
5. Code reformatt afin qu'il utilise des indentations de 4 espaces au lieu de
2, pour mieux se conformer aux conventions Tcl de codage en C. C'est assez
cosmtique mais cela rend le code un peu plus lisible.
-------- 30/04/1999 tcLex version 1.1.1 --------
1. TcLex est maintenant conu pour tre li Tcl8.0.4 (ou patchlevel suprieur)
ou Tcl8.1b3. Tcl8.1b2 n'est plus du tout support.
2. Suppression de la redfinition de TclUtfToUniCharDString et
TclUniCharToUtfDString dont on avait besoin avec la version stubs de Tcl8.1b2,
maintenant que Tcl_UtfToUniCharDString et Tcl_UniCharToUtfDString sont
disponibles publiquement dans Tcl8.1b3.
3. Suppression de la bidouille rendue ncessaire par la non-exportation de
TclRegCompObj par la version stub de Tcl8.1b2. Tcl8.1b3 exporte maintenant la
procdure publique Tcl_GetRegExpFromObj qui fait la mme chose.
4. Incohrence de regexp corrige entre Tcl8.0 et Tcl8.1 avec le traitement
sensible aux lignes. Les regexps avec des champs ngatifs ("negated ranges",
dsol pour la traduction :) (comme [^a]) pouvaient recouvrir plusieurs lignes
sous Tcl8.0 mais pas sous Tcl8.1 (le comportement correct).
5. Nettoy le code regexp modifi et propos sous forme de correctif pour le
noyau Tcl.
6. Rcrit le code d'analyse d'arguments utilisant Tcl_GetIndexFromObj afin
qu'il utilise des constantes symboliques plutt que des index entiers.
7. Ajout de liens vers la page tcLex de Neil Walker's (thanks Neil!) partir de
la doc.
-------- 25/04/1999 tcLex version 1.1.2 --------
1. Bug corrig dans le traitement sensible aux lignes sous Tcl8.0. Ce bug a t
introduit par la modification prcdente no. 4, et se situait dans le code de
regexp traitant des champs ngatifs dans certains cas.
-------- 24/06/1999 tcLex version 1.1.3 --------
1. Bug majeur corrig avec Tcl 8.1.1. Le nouveau mcanisme de cache de regexp
introduit par Tcl 8.1.1 entrait en conflit avec la faon dont tcLex stockait les
regexps compiles. Le code de gestion de regexps a t compltement retravaill.
Bug rapport par by Claude BARRAS.
2. Ajout l'URL vers le regexp-HOWTO de chez Scriptics dans la doc
(http://www.scriptics.com/support/howto/regexp81.html).
-------- 20/07/1999 tcLex version 1.1.4 --------
1. Bug majeur corrig avec Tcl 8.1. Les fonctions BufferNotStarving() et
BufferAtEnd() mlangeaient des index en caractres et en octets, ce qui
entrainait des dpassements de chane. Bug rapport par Neil Walker. Il est
tonnant que ce bug ne se soit pas dclar avant car les risques de dpassement
taient quasi systmatiques, or il ne plantait tcLex que dans des cas bien
prcis (difficiles reproduire sous Windows).
-------- 03/09/1999 tcLex version 1.2a1 --------
1. Ajout le support pour Tcl8.2 et suprieur. Maintenant que le moteur regexp
de Tcl8.2 procure les fonctions dont tcLex a besoin (cad. dtection de
dpassement de chane et recherche limite au dbut chane), tcLex ne ncessite
plus de modification de ce moteur. Ceci rend le code plus simple car il utilise
maintenalnt les fonctions standard de la bibliothque Tcl. Ajout le fichier
RE82.c
2. La chane d'entre est maintenant stocke sous forme de Tcl_Obj et non plus
de Tcl_DString. Retravaill le code correspondant en consquence (RuleTry(),
RuleExec(), RuleGetRange()). Sous Tcl8.0, on utilise la chane 8bits de l'objet.
Sous Tcl8.2, la chane Unicode (pas UTF-8) (en fait, on passe la chane aux
procdures de bibliothque Tcl, qui leur tour utilisent la reprsentation
Unicode de l'objet). Sous Tcl8.1, ajout d'un type d'objet Unicode et des
procdures relatives (par exemple Tcl_NewUnicodeObj(), Tcl_GetUnicode() et
Tcl_GetCharLength()) afin d'tre compatible source avec Tcl8.2. Ces nouveaux
objets Unicode utilisent des Tcl_DStrings Unicode comme reprsentation interne.
3. Modifi le comportement de "lexer begin initial" afin qu'il vide la pile de
conditions au lieu d'empiler la condition "initial" son sommet. Cela rend
l'criture de certains lexeurs plus facile (par exemple, les exemples flex de
Neil Walker).
|