private int MatchReluctant(Matcher m, LookAheadReader input, int start, int skip) { var flag = this.matchStart != start; if (flag) { this.matchStart = start; this.matches = new BitArray(10); this.FindMatches(m, input, start, 0, 0, 0); } var num = this.matches.Count - 1; int matchReluctant; for (var i = 0; i <= num; i++) { var flag2 = this.matches[i]; if (flag2) { var flag3 = skip == 0; if (flag3) { matchReluctant = i; return(matchReluctant); } skip--; } } matchReluctant = -1; return(matchReluctant); }
public override int Match(Matcher m, LookAheadReader input, int start, int skip) { var flag = skip != 0; int Match; if (flag) { Match = -1; } else { var c = input.Peek(start); var flag2 = c < 0; if (flag2) { m.SetReadEndOfString(); Match = -1; } else { var flag3 = m.IsCaseInsensitive(); if (flag3) { c = Convert.ToInt32(char.ToLower(Convert.ToChar(c))); } Match = Conversions.ToInteger(Interaction.IIf(this.InSet(Convert.ToChar(c)), 1, -1)); } } return(Match); }
public override int Match(Matcher m, LookAheadReader input, int start, int skip) { var flag = skip == 0; if (flag) { this.matchStart = -1; this.matches = null; } int match; switch (this.repeatType) { case RepeatType.Greedy: match = this.MatchGreedy(m, input, start, skip); return(match); case RepeatType.Reluctant: match = this.MatchReluctant(m, input, start, skip); return(match); case RepeatType.Possessive: { var flag2 = skip == 0; if (flag2) { match = this.MatchPossessive(m, input, start, 0); return(match); } break; } } match = -1; return(match); }
private int MatchPossessive(Matcher m, LookAheadReader input, int start, int count) { var length = 0; var subLength = 1; while (subLength > 0 && count < this.max) { subLength = this.element.Match(m, input, start + length, 0); var flag = subLength >= 0; if (flag) { count++; length += subLength; } } var flag2 = this.min <= count && count <= this.max; int matchPossessive; if (flag2) { matchPossessive = length; } else { matchPossessive = -1; } return(matchPossessive); }
internal Matcher(Element e, LookAheadReader input, bool ignoreCase) { this.element = e; this.input = input; this.ignoreCase = ignoreCase; this.Reset(); }
public override int Match(Matcher m, LookAheadReader input, int start, int skip) { var length = -1; var length2 = 0; var skip2 = 0; var skip3 = 0; int match; while (skip >= 0) { length = this.elem1.Match(m, input, start, skip2); var flag = length < 0; if (flag) { match = -1; return(match); } length2 = this.elem2.Match(m, input, start + length, skip3); var flag2 = length2 < 0; if (flag2) { skip2++; skip3 = 0; } else { skip3++; skip--; } } match = length + length2; return(match); }
private void FindMatches(Matcher m, LookAheadReader input, int start, int length, int count, int attempt) { var flag = count > this.max; if (!flag) { var flag2 = this.min <= count && attempt == 0; if (flag2) { var flag3 = this.matches.Length <= length; if (flag3) { this.matches.Length = length + 10; } this.matches[length] = true; } var subLength = this.element.Match(m, input, start, attempt); var flag4 = subLength < 0; if (!flag4) { var flag5 = subLength == 0; if (flag5) { var flag6 = this.min == count + 1; if (flag6) { var flag7 = this.matches.Length <= length; if (flag7) { this.matches.Length = length + 10; } this.matches[length] = true; } } else { this.FindMatches(m, input, start, length, count, attempt + 1); this.FindMatches(m, input, start + subLength, length + subLength, count + 1, 0); } } } }
public override int Match(Matcher m, LookAheadReader input, int start, int skip) { var flag = skip != 0; int match; if (flag) { match = -1; } else { var num = this.value.Length - 1; for (var i = 0; i <= num; i++) { var c = input.Peek(start + i); var flag2 = c < 0; if (flag2) { m.SetReadEndOfString(); match = -1; return(match); } var flag3 = m.IsCaseInsensitive(); if (flag3) { c = Convert.ToInt32(char.ToLower(Convert.ToChar(c))); } var flag4 = c != Convert.ToInt32(this.value[i]); if (flag4) { match = -1; return(match); } } match = this.value.Length; } return(match); }
private int MatchGreedy(Matcher m, LookAheadReader input, int start, int skip) { var flag = skip == 0; int matchGreedy; if (flag) { matchGreedy = this.MatchPossessive(m, input, start, 0); } else { var flag2 = this.matchStart != start; if (flag2) { this.matchStart = start; this.matches = new BitArray(10); this.FindMatches(m, input, start, 0, 0, 0); } var num = this.matches.Count - 1; for (var i = num; i >= 0; i += -1) { var flag3 = this.matches[i]; if (flag3) { var flag4 = skip == 0; if (flag4) { matchGreedy = i; return(matchGreedy); } skip--; } } matchGreedy = -1; } return(matchGreedy); }
public override int Match(Matcher m, LookAheadReader input, int start, int skip) { var length = 0; var skip2 = 0; var skip3 = 0; while (length >= 0 && skip2 + skip3 <= skip) { var length2 = this.elem1.Match(m, input, start, skip2); var length3 = this.elem2.Match(m, input, start, skip3); var flag = length2 >= length3; if (flag) { length = length2; skip2++; } else { length = length3; skip3++; } } return(length); }
private void Reset(LookAheadReader input) { this.input = input; this.Reset(); }
private Matcher Matcher(LookAheadReader input) { return(new Matcher((Element)this.element.Clone(), input, this.ignoreCase)); }
public abstract int Match(Matcher m, LookAheadReader input, int start, int skip);