internal RegexNode ScanReplacement()
{
int c;
int startpos;
_concatenation = new RegexNode(RegexNode.Concatenate, _options);
for (; ;)
{
c = CharsRight();
if (c == 0)
break;
startpos = Textpos();
while (c > 0 && RightChar() != '$')
{
MoveRight();
c--;
}
AddConcatenate(startpos, Textpos() - startpos, true);
if (c > 0)
{
if (MoveRightGetChar() == '$')
AddUnitNode(ScanDollar());
AddConcatenate();
}
}
return _concatenation;
}
/* * This static call constructs a flat concatenation node given * a replacement pattern. */ internal static RegexReplacement ParseReplacement(String rep, Hashtable caps, int capsize, Hashtable capnames, RegexOptions op) { RegexParser p; RegexNode root; p = new RegexParser((op & RegexOptions.CultureInvariant) != 0 ? CultureInfo.InvariantCulture : CultureInfo.CurrentCulture); p._options = op; p.NoteCaptures(caps, capsize, capnames); p.SetPattern(rep); root = p.ScanReplacement(); return new RegexReplacement(rep, root, caps); }