2006-01-04 Atsushi Enomoto <atsushi@ximian.com>
* RelaxngValidatingReader.cs :
- Simplified CreateValidationError().
- Don't validate 1) whitespaces outside element and 2) whitespaces
which do not consist of text only content.
- Implemented "memoization":
http://www.thaiopensource.com/relaxng/derivative.html#Memoization
- with related to memoization, use new TextOnlyDeriv() and
MixedTextDeriv() to validate texts. See also RdpPattern changes.
* RelaxngGrammar.cs : don't update pool tables for static instances.
* RdpPattern.cs :
- Implemented textOnlyDeriv and mixedTextDeriv of "memoization".
Details are described in the "derivative" algorithm:
http://www.thaiopensource.com/relaxng/derivative.html#Memoization
- Added MakeChoiceLeaf() to implement "choice-leaves":
http://www.thaiopensource.com/relaxng/derivative.html#Avoiding_exponential_blowup
- To intern effectively, reorder choice and interleave contents by
hash code.
- Avoid extra pattern creation with related to empty and notAllowed
as one hand of binary branches.
* RelaxngValidatingReaderTests.cs : regressions mentioned in the
previous fix were solved.
svn path=/trunk/mcs/; revision=55071