Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ChangeLog « System.Text.RegularExpressions « System « class « mcs - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e6e83332e02c9009ddaccb22880b0f9fca5d0c3d (plain)
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
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
2009-08-10  Raja R Harinath  <harinath@hurrynot.org>

	* syntax.cs (BackslashNumber): New class.
	* parser.cs (ParseSpecial): Create it instead of 'Reference' if a
	numeric backreference is seen.

2009-08-10  Raja R Harinath  <harinath@hurrynot.org>

	* parser.cs (ResolveReferences): Allow named groups to be
	referred-to by their group numbers too.

2009-04-23  Sebastien Pouliot  <sebastien@ximian.com>

	* Regex.cs: Remove Compiler-related support for NET_2_1
	* RegexOptions.cs: Remove Compile from values available on NET_2_1

2009-03-04  Zoltan Varga  <vargaz@gmail.com>

	* RxInterpreter.cs (ResetGroups): Avoid allocating larger than needed
	arrays.

2009-02-27  Jonathan Pryor <jpryor@novell.com>

	* Regex.cs (Replace): Check that input & evaluator are not null, as
	  documented in MSDN (and the variance found while testing DbLinq).

2009-02-27  Zoltan Varga  <vargaz@gmail.com>

	* BaseMachine.cs (LTRReplace): Initialize the StringBuilder with an
	appropriate initial length.

2009-02-24  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Partially inline calls to Char.ToLower () to speed
	up ignorecase matching.

2009-02-16  Jb Evain  <jbevain@novell.com>

	* Regex.cs: on the NET_2_1 profile, always use the old engine for now.

2009-02-14  Zoltan Varga  <vargaz@gmail.com>

	* Regex.cs: Add a MONO_NEW_RX variable to enable the new regex
	engine.

2009-02-04  Zoltan Varga  <vargaz@gmail.com>

	* Regex.cs: Disable the new regex engine for now.

2009-01-14  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Avoid throwing exceptions for a few more unhandled opcodes.
	Implement the reverse/ignorecase versions of Reference. Fix the reverse
	version of Bitmap. Error out if a Jump opcode jumps outside the current
	pc range. This works around #466151.

2009-01-12  Jb Evain  <jbevain@novell.com>

	* RxInterpreter.cs: set trace_rx to false for NET_2_1.
	* Regex.cs: set old_rx to false for NET_2_1.

2009-01-07  Zoltan Varga  <vargaz@gmail.com>

	* RxInterpreter.cs: Add support for constant strings in anchors. Fixes
	#464135.

2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>

	* cache.cs: avoid infinite loop.

2008-11-14 Gonzalo Paniagua Javier <gonzalo@novell.com>

	* cache.cs:
	* Regex.cs: honor CacheSize value.

2008-11-13  Zoltan Varga  <vargaz@gmail.com>

	* RxInterpreter.cs: Fix pc computation in various opcodes. Fixes #443841.

2008-11-11  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Implement Reference opcode.

2008-10-30  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Implement SubExpression opcode.
	
	* CILCompiler.cs: Save and restore strpos in the Test opcode. Fixes
	#439947.

2008-10-25  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Implement Test opcode.

2008-10-25 Gonzalo Paniagua Javier <gonzalo@novell.com>

	* RxInterpreter.cs: implement missing Unicode* opcodes and
	StringReverseIgnoreCase.

2008-10-25  Zoltan Varga  <vargaz@gmail.com>

	* RxOp.cs: Remove unused Generic opcodes.

	* RxCompiler.cs: Emit opcodes with flags using methods which can be 
	overriden by CILCompiler.cs, so we only have to override a few methods.

	* CILCompiler.cs: Simplify based on the RxCompiler changes. Implement
	UnicodeString opcode. Throw a NotImplementedException when an unsupported
	opcode is encountered, since the IL compiler is now believed to be feature 
	complete.

2008-10-24  Zoltan Varga  <vargaz@gmail.com>

	* RxInterpreter.cs CILCompiler.cs gen-interp.cs: Fix the reading of short 
	values from the instruction stream.

	* RxOp.cs: Add some missing unicode opcodes.

	* gen-interp.cs RxInterpreter.cs: Generate Bitmap/UnicodeBitmap opcodes too.

	* CILCompiler.cs (EmitEvalMethodBody): Add an 'end_pc' argument to mark the
	end of the bytecode range which needs to be compiled. Use it to avoid
	compiling the same bytecode multiple times in various opcodes. Fix
	RxOp.Jump implementation. Add implementation for unicode opcodes.

2008-10-09  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Implement NoBitmap/NoBitmapIgnoreCase. Fixes #432172.

2008-09-14  Zoltan Varga  <vargaz@gmail.com>

	* gen-interp.cs: New file to generate the all variants of the character 
	checking opcodes in RxInterpreter.cs.

	* RxInterpreter.cs: Replace hand written code with code generated by
	gen-interp.cs.
	
	* RxInterpreter.cs: Fix the failure case of the No<XXX> opcodes. Fixes
	#426142.

2008-09-13  Zoltan Varga  <vargaz@gmail.com>

	* RxInterpreter.cs RxCompiler.cs: Implement some missing Category opcodes.

2008-09-07  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Override ICompiler.EmitSet too so we set op_flags for 
	Bitmap opcodes too. Fixes #424073.

2008-09-06  Zoltan Varga  <vargaz@gmail.com>

	* Regex.cs: Make the new regex interpreter+compiler the default.

2008-08-31  Zoltan Varga  <vargaz@gmail.com>

	* RxInterpreter.cs: Port the Anchor+StartOfString optimization from the old
	interpreter. Add credits.

	* RxCompiler.cs (EmitString): Lowercase the string if ignore is true.

	* CILCompiler.cs: Fix the setting of the match position in the
	anchor+char optimization.
	
	* CILCompiler.cs: Implement FastRepeatLazy.

	* CILCompiler.cs: Get rid of commented out code. Also get rid of
	frame.local_strpos_res, since the generated code already set Arg1 to
	the same value.

2008-08-30  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Initialize all mi_ variables lazily.
	
	* CILCompiler.cs: Implement FastRepeat.

	* RxInterpreter.cs: Add back SetStartOfMatch, make it protected so as to
	avoid a warning.

	* CILCompiler.cs RxOp.cs: Merge lots of changes from RxInterpreter.cs,
	refactor the code.

2008-08-29  Zoltan Varga  <vargaz@gmail.com>

	* RxInterpreter.cs RxCompiler.cs RxOp.cs: Implement/fix this so all the
	regex tests now run. The Repeat code is taken from the old interpreter.

2008-08-28  Zoltan Varga  <vargaz@gmail.com>

	* RxInterpreter.cs RxCompiler.cs RxOp.cs: Add support for 
	Category.AnySingleline.

2008-08-27  Zoltan Varga  <vargaz@gmail.com>

	* RxCompiler.cs: Use Array.Copy since Buffer.BlockCopy operates on bytes.
	
2008-07-31  Jb Evain  <jbevain@novell.com>

	* BaseMachine.cs: clean up for NET_2_1.

2008-06-05  Roei Erez  <roeie@mainsoft.com>

	* JvmReMachine.jvm.cs: Fix a bug in match that contains
	empty group at the end.

2008-04-13  Jb Evain  <jbevain@novell.com>

	* Regex.cs: update undocumented fields for the 2.1 profile.
	Merged from the Moonlight 2 branch.

2008-02-26  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Implement StringIgnoreCase.
	
	* CILCompiler.cs: Implement grouping support.

	* CILCompiler.cs: Implement character groups.

2008-02-25  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Implement lots of missing opcodes.

2008-02-18  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs (EmitEvalMethodBody): Check for the not-yet supported
	groups.Count > 1.

Thu Feb 14 19:03:00 CET 2008 Paolo Molaro <lupus@ximian.com>

	* RxCompiler.cs, RxInterpreter.cs, RxOp.cs, CILCompiler.cs : support for word
	boundary position opcodes, ignorecase backreference and more capture
	work.

Thu Feb 14 17:11:10 CET 2008 Paolo Molaro <lupus@ximian.com>

	* RxCompiler.cs, RxInterpreter.cs, RxOp.cs: replace EcmaDigit with
	Range, fixed matching of "" =~ /$/, implementedt TestCharGroup.
	Fixes and other misc opcodes implemented.

2008-02-13  Zoltan Varga  <vargaz@gmail.com>

	* CILCompiler.cs: Restructure some code to avoid a branch inside a loop.
	
	* CILCompiler.cs: Fix the unsafe string matching code.

	* CILCompiler.cs: Improved version which emits only one method in most cases.

	* CILCompiler.cs: Fix some comments.

	* CILCompiler.cs: New file, extracted from RxCompiler.cs.

	* RxInterpreter.cs RxCompiler.cs: First version of regex IL compiler.

Wed Feb 13 13:18:12 CET 2008 Paolo Molaro <lupus@ximian.com>

	* RxCompiler.cs, RxInterpreter.cs, RxOp.cs: unicode categories and
	some grouping/capture support.

Tue Feb 12 19:16:49 CET 2008 Paolo Molaro <lupus@ximian.com>

	* RxCompiler.cs, RxInterpreter.cs, RxOp.cs: experimental new
	interpreter.

2008-02-10  Zoltan Varga  <vargaz@gmail.com>

	* replace.cs (NeedsGroupsOrCaptures): New property. Determines whenever the
	replacement process needs access to the groups or captures properties of the
	Match object.

	* Group.cs: Add an internal ctor which avoids allocations.

	* Match.cs: Ditto.

	* BaseMachine.cs interpreter.cs: Add an optimization to avoid fully creating
	Match objects during Replace () if the replacement string is simple.

	* BaseMachine.cs Regex.cs: Make LTRReplace and RTLReplace instance methods to 
	avoid creating two machines for each Regex.Replace () call.

	* interpreter.cs (Eval): Remove a needless string allocation.

2007-12-04  Arina Itkes <arinai@mainsoft.com>

	* parser.cs: Max value of m for a construct {n,m} is 2147483647.

2007-11-15  Miguel de Icaza  <miguel@novell.com>

	* Revert the patch from Juraj Skripsky as it made the class
	non-thread safe (see #341986).

2007-11-08  Raja R Harinath  <harinath@gmail.com>

	Fix 324390
	* BaseMachine.cs (LTRReplace): Don't use non-advancement of 'ptr'
	to deduce absence of matches -- a match can have length 0.
	(RTLReplace): Likewise.

2007-11-07  Raja R Harinath  <harinath@gmail.com>

	Support RegexOptions.RightToLeft in Replace().
	* BaseMachine.cs (Replace): Use either LTRReplace or RTLReplace
	based on regex.
	(LTRReplace): Make internal and rename the MatchAppendEvaluator
	version of Replace to this.
	(RTLReplace): New.
	* Regex.cs (Replace): Use LTRReplace and RTLReplace from BaseMachine.
	* replace.cs (ReplacementEvaluator.Evaluate): Optimize simple case.
	Based on patch by Stephane Delcroix.

	* replace.cs (Compile): Don't unescape string.

2007-11-01  Gert Driesen  <drieseng@users.sourceforge.net>

	* Match.cs: Do not throw NotSupportedException on zero-length
	replacement argument.

2007-10-29 Arina Itkes <arinai@mainsoft.com>

	* Regex.cs: Moving creation of Regex machine to ctor.
	It increases an initialization time of Regex but reduce a 
	process time while APIs calling. Also it solves the problem 
	of missed multi thread synchronization.

2007-10-29 Arina Itkes <arinai@mainsoft.com>
	
	* Match.cs: Fix for Result method of Match. Throwing an exception 
	if Result method was called on a failed Match. 

2007-10-24  Juraj Skripsky <js@hotfeet.ch>

	* Regex.cs: Store and re-use IMachine, no need to re-instantiate
	it every time we're matching.
	
2007-10-24 Arina Itkes <arinai@mainsoft.com>

	* Regex.cs Match.cs arch.cs compiler.cs interpreter.cs
	 Refactoring of Interpreter with extracting of base abstract class 
	 that executes some methods that were moved from Regex and Match classes.
	 Added a field that maps group numbers to group names in Regex for 
	 improvement of performance of GroupNameFromNumber method.

2007-10-21  Gert Driesen  <drieseng@users.sourceforge.net>

	* RegexTest.cs: Removed. Test was already moved to the appropriate
	location. 

2007-06-21  Juraj Skripsky <js@hotfeet.ch>

	* quicksearch.ch: Optimization. Add byte array as skip table for
	chars <= 255, falling back to the hashtable for chars > 255 and
	skip distances > 255.

2007-04-18  Raja R Harinath  <rharinath@novell.com>

	Fix #80554
	* parser.cs (ResolveReferences): Don't throw an expression if a
	capture assertion reference cannot be resolved.
	(ParseGroupingConstruct): Provide fallback expression to a capture
	assertion.
	* syntax.cs (CaptureAssertion): If the bareword doesn't refer to
	the name of a capture group, fallback to treating it as a literal
	expression.

2007-04-04  Raja R Harinath  <rharinath@novell.com>

	* interpreter.cs (Eval) <OpCode.Reference>: Distribute for loop
	inside if.
	for () if (a) s1; else s2; => if (a) for () s1; else for () s2;

2007-04-03  Raja R Harinath  <rharinath@novell.com>

	* Regex.cs (~Regex): Don't define in NET_2_0 profile.

2007-01-02  Raja R Harinath  <rharinath@novell.com>

	Fix #79472
	* parser.cs (Parser.GetMapping): Use the actual group numbers to
	build the mapping.

2006-09-28  Andrew Skiba  <andrews@mainsoft.com>

	* Regex.cs: TARGET_JVM

2006-05-30  Gert Driesen  <drieseng@users.sourceforge.net>

	* CaptureCollection.cs: Removed virtual keyword to fix API mismatches.
	* MatchCollection.cs: Removed virtual keyword to fix API mismatches.
	* GroupCollection.cs: Removed virtual keyword to fix API mismatches.

2006-05-08  Raja R Harinath  <rharinath@novell.com>

	Fix #78278
	Remove 65535-limit on number of repetitions matched by a pattern.
	We still have a 65535 limit on the length of a pattern and the
	number of groups in a pattern.
	* compiler.cs (PatternCompiler.EmitCount): New.  Emits an int as
	two ushorts into the program stream.
	(EmitInfo, EmitRepeat, EmitFastRepeat): Use it to emit integers
	rather than shorts.
	* interpreter.cs (Intepreter.ReadProgramCount): Read an int
	emitted into the program stream.
	(Interpreter): Use it.  Update counts.
	(Interpreter.Eval) [OpCode.Repeat, OpCode.FastRepeat]: Likewise.
	* parser.cs (ParseGroup): Pass 0x7ffffff as the max value for '*'
	and '+' repetition patterns.
	* arch.cs (Info, Repeat, FastRepeat): Update description.

2006-04-18  Raja R Harinath  <rharinath@novell.com>

	Treat fixed repetitions of simple regexes as simple too.
	* syntax.cs (Expression.IsComplex): Make abstract.
	(Group.IsComplex, Alternation.IsComplex): Move ...
	(CompositeExpression.IsComplex): ... here.
	(Group.GetAnchorInfo): Reduce allocations.  Avoid creating another
	ArrayList, and use a StringBuilder to build up the string.
	(Repetition.GetAnchorInfo): Use a StringBuilder to build up the string.
	(ExpressionAssertion.IsComplex): Override.

2006-04-17  Florian Gross  <flgr@ccan.de>
	    Raja R Harinath  <rharinath@novell.com>

	* syntax.cs (CharacterClass.Compile): Emit categories after the
	character intervals so that the evaluator can pick up the
	'IgnoreCase' flag.

2006-04-07  Raja R Harinath  <rharinath@novell.com>

	Fix #78007
	* interpreter.cs (Interpreter.Eval) [Anchor, Position.StartOfString]:
	Don't reset 'ptr' to 0 during forward scan.

	Fix #76345
	* interpreter.cs (Interpreter.FastEval) [FastRepeat]: If the first
	tail operation has a 'negate' flag, avoid the "match next char"
	optimization.

	Fix #69269
	* arch.cs (OpCode.NotCategory): New.  Stands for matching a
	character _not_ from the given category.
	* debug.cs (DisassembleBlock): Handle it.
	* compiler.cs (ICompiler.EmitNotCategory): New.
	(Compiler.EmitNotCategory): New.  Emit OpCode.NotCategory.
	* syntax.cs (CharacterClass.Compile): Don't conflate negation of
	the character class and negation of the category.  Use
	EmitNotCategory.
	* interpreter.cs (Interpreter.Eval): Pass OpCode.NotCategory to
	EvalChar.
	(Interpreter.EvalChar): Handle it.

2006-04-06  Raja R Harinath  <rharinath@novell.com>

	Fix #77487
	* interpreter.cs (Eval) [Until, FastUntil]: Set 'deep' to null
	when evaluating the tail.  Ensure that backtracks don't confuse
	the recursion vs. iteration detector.

2006-04-03  Raja R Harinath  <rharinath@novell.com>

	* interpreter.cs (Eval) [Until, lazy]: Avoid extra evaluation on a
	degenerate match.

2006-03-30  Raja R Harinath  <harinath@gmail.com>

	Fix #77626
	* parser.cs (Parser.ParseCharacterClass): Don't automatically
	assume there's a range when we see '-'.  Ensure that we have seen
	at least one other character, and that we aren't already parsing a
	range.  Handle some more errors.

2005-12-19  Kornél Pál  <kornelpal@hotmail.com>

	* Regex.cs: Added support for regular expressions compiled to
	  assemblies by compiling the pattern. This solution ignores existing
	  CIL code but provides full support for regular expression classes
	  compiled by MS.NET.

2005-11-21  Sebastien Pouliot  <sebastien@ximian.com> 

	* CaptureCollection.cs: Fixed length check.
	* Group.cs: Added missing validation for Synchronized method.
	* Match.cs: Added missing validation for Synchronized and Result 
	methods.
	* MatchEvaluator.cs: Added [Serializable] for 2.0 profile.
	* RegexCompilationInfo.cs: Added missing property validation.
	* Regex.cs: Implemented UseOptionC and UseOptionR protected methods
	(now documented). Fixed API for 2.0 profile.
	* RegexRunner.cs: Stubbed CharInClass for 2.0 profile.

2005-11-17  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* Match.cs: Removed the ": base ()" on the private ctor as it is
	unrequired and cause an extra public ctor to added (bug #76736).
	* MatchCollection.cs: Add missing virtual to indexer property.

2005-09-23  Raja R Harinath  <rharinath@novell.com>

	* interpreter.cs (Interpreter.Eval) [OpCode.Until]: Invert the
	sense of a test to reflect the code re-organization.

2005-09-22  Raja R Harinath  <rharinath@novell.com>

	Fix #72152, #72989.
	* interpreter.cs (Interpreter.Eval) [OpCode.Until]: Avoid some
	cases of recursion when dealing with eager quantifiers too.  We
	now avoid recursion when handling the innermost quantifier.
	(Interpreter.IntStack, Interpreter.stack): New.  Stack to help
	implement backtracking in eager quantifiers.

2005-09-21  Raja R Harinath  <rharinath@novell.com>

	* interpreter.cs (Interpreter.Eval) [OpCode.Until]: Avoid some
	cases of recursion when dealing with the minimum count and lazy
	quantifiers.

2005-08-23  Raja R Harinath  <rharinath@novell.com>

	* regex.cs: Remove.  Split into ...
	* MatchEvaluator.cs, Regex.cs, RegexCompilationInfo.cs,	
	RegexOptions.cs: ... these.  Now every publicly exposed type in
	this namespace has its own file.

2005-07-21  Florian Gross  <flgr@ccan.de>

	* Fixed a bug in category.cs that caused ECMAScript \d to fail.

2005-07-13  Raja R Harinath  <rharinath@novell.com>

	Make even more lazier.
	* MatchCollection.cs (TryToGet): Don't generate match i+1 when
	we're looking for match i.  Change post-conditions.
	(FullList): New helper property.  Ensures the list is fully populated.
	(Count, CopyTo): Use it.
	(Enumerator.Current): Update to new post-conditions of TryToGet.
	(Enumerator.MoveNext): Likewise.  Don't modify index if we're
	beyond the end.

2005-07-08  Raja R Harinath  <rharinath@novell.com>

	* MatchCollection.cs: Convert to incremental mode.
	* regex.cs (Regex.Matches): Update.  Pass responsibility of
	generating all matches to MatchCollection.

2005-06-14  Raja R Harinath  <harinath@gmail.com>

	* parser.cs (Parser.ConsumeWhitespace): Add bounds check.

	Fix #74753.
	* Match.cs (Match) [zero-argument variant]: Make private.
	* GroupCollection (Item) [string variant]: Don't look for the
	group number in an empty match.

2005-06-10  Raja R Harinath  <rharinath@novell.com>

	* interpreter.cs (Interpreter.GenerateMatch): Avoid allocating two
	intermediate arrays to build the final result.
	(Interpreter.GetGroupInfo, Interpreter.PopulateGroup): New helper
	functions.
	* CaptureCollection.cs (list): Change from ArrayList to list.
	(SetValue): New internal helper, used by Interpreter.PopulateGroup.
	(Enumerator): Remove helper class.
	(IEnumerator.GetEnumerator): Just use list.GetEnumerator.
	* GroupCollection.cs: Likewise.
	* Group.cs (Group): Move responsibility of populating 'Captures'
	to Interpreter.PopulateGroup.
	* Match.cs (Match): Move responsibility of populating 'Groups' to
	Interpreter.GenerateMatch.

2005-05-25  Raja R Harinath  <rharinath@novell.com>

	* replace.cs (ReplacementEvaluator.Compile): Rewrite to avoid
	creating several intermediate strings.  Simplify internal
	intermediate representation.
	(ReplacementEvaluator.EvaluateAppend): New.  Version of Evaluate
	that builds the result directly on a passed-in StringBuilder.
	(ReplacementEvaluator.Evaluate): Just a wrapper around
	EvaluateAppend.
	* regex.cs (MatchAppendEvaluator): New internal delegate.
	(Regex.Replace): Use MatchAppendEvaluator.
	(Regex.Adapter): New class used to adapt a MatchEvaluator to a
	MatchAppendEvaluator.

2005-05-24  Raja R Harinath  <rharinath@novell.com>

	* replace.cs (ReplacementEvaluator.CompileTerm): Fix group
	returned by $+.

2005-05-20  Ben Maurer  <bmaurer@ximian.com>

	* regex.cs: Some memory allocation optimizations.

2005-05-20  Raja R Harinath  <rharinath@novell.com>

	Fix #74735.
	* replace.cs (ReplacementEvaluator.Compile): Allow CompileTerm to
	fail and yet have advanced the pointer.  Append the scanned-over
	portion to the "literal" being built.
	(ReplacementEvaluator.CompileTerm): Don't throw any exceptions.
	If a term cannot be recognized, just return null.

	* compiler.cs (InterpreterFactory.GroupCount): Fix.  The 0'th
	index corresponds to Opcode.Info.

	* parser.cs (Parser.Unescape): If the string doesn't contain any
	'\' character, don't allocate a new string.

	* replace.cs (ReplacementEvalutator.Term.AppendResult): Rename
	from GetResult.  Append to a passed-in StringBuilder rather than
	return a string.
	(ReplacementEvaluator.Evaluate): Update.
	
	* Capture.cs, Group.cs, Match.cs: New files split out of ...
	* match.cs: ... this.  Remove.

2005-02-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* parser.cs: stuff inside {} might not be a quantifier. Fixes
	bug #69193.

2005-01-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* quicksearch.cs: handle IgnoreCase when getting the shift distance.
	Fixes bug #69065. Patch by mei@work.email.ne.jp.

2005-01-08  Miguel de Icaza  <miguel@ximian.com>

	* syntax.cs: Applied patch from mei@work.email.ne.jp to fix bug
	#71077.

	* parser.cs: Turns out that \digit sequences are octal sequences
	(no leading zero is needed);  And the three octal digit rule
	applies to the leading zero as well.

	This fixes the Unescape method.

2004-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* regex.cs: use NextMatch to move on to the next match. Fixes bug
	#57274.

2004-11-09  Atsushi Enomoto  <atsushi@ximian.com>

	* parser.cs : cast.

2004-11-08  Ben Maurer  <bmaurer@ximian.com>

	* replace.cs, parser.cs: Use stringbuilder for allocation sanity.

2004-10-21  Joerg Rosenkranz  <joergr@voelcker.com>

	* regex.cs: Fixed a bug introduced with the last patch which
	prevented any replacements when a postive count is given.
	This also happens in all overloads without count parameter.

2004-10-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* regex.cs: in Replace, when count is negative, replacement continues
	to the end of the string.

	Fixes bug #68398. Patch by Jon Larimer.

2004-06-10  Gert Driesen <drieseng@users.sourceforge.net>

	* RegexRunner.cs: fixed case mismatch of methods

2004-06-10  Gert Driesen <drieseng@users.sourceforge.net>

	* RegexRunner.cs: marked TODO, added missing protected internal
	fields, throw NotImplementedException in all methods

2004-06-10  Gert Driesen <drieseng@users.sourceforge.net>

	* RegexRunnerFactory.cs: removed comment, no longer throw exception
	from ctor
	* regex.cs: fixed public API signature by renaming protected 
	internal fields and adding destructor, added MonoTODO attribute to
	fields and method that are not yet implemented, changed not 
	implemented methods to throw NotImplementedException instead of
	Exception, fixed names of field that are serialized

2004-06-06  Jambunathan K <kjambunathan@novell.com>
	
	* parser.cs: Fixed issues with Regex.Unescape() identified as part of
	debugging bug #58256. The original problem reported was about
	inconsistency between the way we treat replacement patterns and the 
	way microsoft treats the replacement patterns in Regex.Replace(). MS
	implementation is buggy and doesn't honour escape sequences in the
	replacement patterns, even though the SDK claims otherwise.

	
2004-06-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* syntax.cs: re-applied my patch from 2004-05-27 plus a fix which is
	emitting a Category.All if both a category and its negated value are
	present.

2004-06-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* syntax.cs: reverting my previous patch. It causes bigger problems.

2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* category.cs: added LastValue field to mark the end of enum Category.
	* syntax.cs: in CharacterClass, use Category.LastValue to get the size
	of the array needed. Use a BitArray instead of bool[].
	In AddCategory(), don't set the opposite category as false. Fixes
	bug #59150. All tests pass.

2004-05-25  Jackson Harper  <jackson@ximian.com>

	* parser.cs: Allow creating a regular expression using {,n} as the
	specified. The min bounds is set to -1, I am not completely sure
	if that is what it is supposed to be but MS does not set it to 0
	based on testing. Patch by dave-gnome-bugs@earth.li. Fixes bug #56761.

2004-05-12  Dick Porter  <dick@ximian.com>

	* regex.cs: 
	* quicksearch.cs: 
	* RegexRunnerFactory.cs: 
	* RegexRunner.cs: More public API difference fixes.

	* GroupCollection.cs: 
	* MatchCollection.cs: 
	* CaptureCollection.cs: Moved GroupCollection, MatchCollection and
	CaptureCollection so that they no longer inherit from the
	non-standard RegexCollectionBase class.  Fixes the API difference.

2004-04-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* arch.cs:
	* compiler.cs:
	* interpreter.cs:
	* parser.cs:
	* syntax.cs:
	Patch by Eric Durand Tremblay.
	1) Capture inner group when named.
	2) Resolved parse error caused by not capturing inner group
	3) Resolved incorrect capture group
	4) Now, not capturing anything when unnamed ( correct behavior)


2004-04-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* arch.cs:
	* compiler.cs:
	* interpreter.cs:
	* parser.cs:
	* syntax.cs: converted to unix line endings.

2004-03-30  Lluis Sanchez Gual <lluis@ximian.com>

	* collections.cs: In the indexer, return an empty group if the requested
	group is not found.
	* match.cs: Added default constructor for Group.
	
2004-03-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* parser.cs: fixed group numbering.

2004-03-22  Jackson Harper  <jackson@ximian.com>

	* parser.cs: Use the group number as the name in mapping. Patch by
	Gert Driesen.
	* regex.cs: Fix off by one error. Patch by Gert Driesen.

2004-03-17  Francois Beauchemin <beauche@softhome.net>
 	* syntax.cs, interpreter.cs, quicksearch.cs, regex.cs, compiler.cs : 
 		Revised support for RigthToLeft. 
 		quicksearch has now an reverse option.		
 		This fixes bug #54537 
 
  	* regex.cs, compiler.cs :
 	 	Some code to support CILCompiler.		
 	* regex.cs : 
 		Added some undocumented of MS.
 
2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* parser.cs: allow a @"\0" escape sequence. Fixes bug #54797.

2004-02-01  Miguel de Icaza  <miguel@ximian.com>

	* syntax.cs, interval.cs: Applied patch from Marco Cravairo
	through Francois Beauchemin who reviewed on the mailing list.
	This fixes bug #45976

2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* parser.cs: an opening brace without a
	quantifier do not cause a parse error. Fixes bug #52924.

2004-01-07  Lluis Sanchez Gual <lluis@ximian.com>

	* regex.cs: In Split(), if the last match is at the end of the string, 
	an empty string must be added to the array of results.

2003-12-15  Sanjay Gupta <gsanjay@novell.com>
	* match.cs: Check for null value before Substring method call.  
	Fixes bug #52034.

2003-11-21  Juraj Skripsky <js@hotfeet.ch>

	* quicksearch.cs: Create and use hashtable only for "long" search 
	strings. 

	(Search): Use simple scan for a single-character search strings.
	
	(GetChar): Simplify case sensitivity handling.

2003-11-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* interpreter.cs: when evaluating a degenerate match, restore the
	RepeatContext if fail. Fixes bug #42529.

2003-11-22  Jackson Harper <jackson@ximian.com>

	* regex.cs: Add CultureInvariant flag to RegexOptions.
	
2003-11-20  Juraj Skripsky <js@hotfeet.ch>

	* quicksearch.cs: Use a hashtable instead of an array for the
	shift table to improve the memory usage.  

2003-11-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* regex.cs:
	(Split): include capture groups in the results, if any. Fixes bug
	#51146.

2003-07-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* regex.cs: patch from Eric Lindvall <eric@5stops.com> that fixes bug
	#44830.

2003-03-05  Miguel de Icaza  <miguel@ximian.com>

	* category.cs (CategoryUtils.CategoryFromName): Use StartsWith
	("Is") instead of a substring for (0,2) which was throwing an
	exception causing Category.None to be returned

2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* collections.cs: fixed bug #30091.

2002-12-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* regex.cs: fixed little mistake (closes #35860).

2002-11-12 Jackson Harper <jackson@latitudegeo.com>

	* arch.cs compiler.cs regex.cs: Added mapping attribute to MachineFactories

2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* parser.cs: detect illegal \ at end of pattern. Fixes 31334.

2002-10-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* parser.cs: applied fix from Tim Haynes (thaynes@openlinksw.com) to
	solve bug #32807. Also modified GetMapping to return the same as MS.

2002-08-28  Juli Mallett  <jmallett@FreeBSD.org>

	* arch.cs, compiler.cs: Give the interpreter machine a property
	for the retrieval of the group count.

	* regex.cs: Use the new GroupCount property of the factory to
	initialise the current group count, and restructure code to compile
	the pattern only the first time it is needed (essentially backing
	out the previous revision of regex.cs, to use the new code.)

2002-08-14  Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>

	* regex.cs: Added the ctr for ISerializable implementation and
	implemented the GetObjectData function.

2002-07-30  Juli Mallett  <jmallett@FreeBSD.org>

	* regex.cs: Fixed bug where the expression would not be
	re-evaluated for grouping purposes when factory caches were
	used, resulting in no groups being recognised after one call
	with a given pattern and no change in options.

2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>

	* regex.cs: Fixed bug in split.

2002-05-08  Dan Lewis  <dihlewis@yahoo.co.uk>

	* interpreter.cs: Moved to an array-based stack representation
	for faster captures.

	* match.cs, collections.cs: Decoupled capture representation from
	interpreter internals.

	* cache.cs: Changed Key type from struct to class for speed.

2002-04-06  Dan Lewis  <dihlewis@yahoo.co.uk>

	* cache.cs: Object methods should be overridden with "override".

2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>

	* RegexRunner.cs, RegexRunnerFactory.cs: MS support classes. Stubs
	added for completeness.

	* regex.cs, match.cs, collections.cs: Serializable attribute.

2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>

	* regex.cs: Added static Matches and IsMatch methods.

2002-04-03  Dan Lewis  <dihlewis@yahoo.co.uk>

	* ChangeLog: Added changelog.

	* cache.cs: Fixed bug in MRUList.Evict.