public void BoyerMooreCaseFold() { BoyerMooreScanner scanner = new BoyerMooreScanner("example", true); Assert.That(scanner.Position, Is.EqualTo(-1)); scanner.Scan("this is a simple example"); Assert.That(scanner.Position, Is.EqualTo(17)); scanner.Scan("the quick brown fox"); Assert.That(scanner.Position, Is.EqualTo(19)); scanner.Scan("This is a Simple Example"); Assert.That(scanner.Position, Is.EqualTo(17)); scanner.Scan("THIS IS A SIMPLE EXAMPLE"); Assert.That(scanner.Position, Is.EqualTo(17)); }
internal NFA(NFABuilder builder) { this.sameFinal = new Match.SameFinal(); this.Pending = new int[builder.TestDepth]; this.PendingTop = 0; this.Undos = new UndoStep[builder.MaxUndos + 2]; this.UndoTop = 0; AtomicCount = builder.ParseInfo.nAtomics; GroupNames = builder.ParseInfo.captures.ToArray(); QuantDepth = builder.ParseInfo.quantDepth; Anchored = builder.ParseInfo.anchor; Backrefs = builder.ParseInfo.backrefs; Instructions = builder.Instructions.ToArray(); nTransitions = 0; List<Transition[]> stateList = new List<Transition[]>(); foreach (List<Transition> transList in builder.States) { stateList.Add(transList.ToArray()); nTransitions += transList.Count; } States = stateList.ToArray(); FinalState = builder.FinalState; FirstTest = builder.FirstTest; FixedPrefix = builder.FixedPrefix; }
public void BoyerMooreCasefoldRepeatScan() { BoyerMooreScanner scanner = new BoyerMooreScanner("pirate", true); int nMatches = 0; for (int pos = 0; scanner.Scan(penzance, pos); pos = scanner.Position + 1) nMatches++; Assert.That(nMatches, Is.EqualTo(10)); }
public void BoyerMooreExample() { BoyerMooreScanner scanner = new BoyerMooreScanner("example"); Assert.That(scanner.Position, Is.EqualTo(-1)); scanner.Scan("this is a simple example"); Assert.That(scanner.Position, Is.EqualTo(17)); scanner.Scan("the quick brown fox"); Assert.That(scanner.Position, Is.EqualTo(19)); scanner.Scan("This is a Simple Example"); Assert.That(scanner.Position, Is.EqualTo(24)); }