Microsoft.Automata.Rex.RexEngine.GenerateMembers C# (CSharp) Méthode

GenerateMembers() public méthode

Generates at most k distinct strings in the language of the sfa. The enumeration is empty if the language is empty.
public GenerateMembers ( Automaton sfa, int k ) : IEnumerable
sfa Automaton
k int
Résultat IEnumerable
        public IEnumerable<string> GenerateMembers(Automaton<BDD> sfa, int k)
        {
            if (sfa == null || sfa.IsEmpty)
                yield break; //there are no members to generate

            var old = new HashSet<string>();

            for (int i = 0; i < k; i++)
            {
                string member = GenerateMember(sfa);
                int tryCount = Math.Min(tryLimitMin + old.Count, tryLimitMax);
                while (old.Contains(member) && tryCount-- > 0)
                    member = GenerateMember(sfa);
                if (tryCount < 0 && old.Contains(member))
                    break; //give up, the language has less than k elements with high probability
                old.Add(member);
                yield return member;
            }
        }

Same methods

RexEngine::GenerateMembers ( RegexOptions options, int k ) : IEnumerable

Usage Example

Exemple #1
0
        public void TestSampleRegexesInMultilineMode()
        {
            Rex.RexEngine rex = new Rex.RexEngine(BitWidth.BV16);
            string[] regexes = File.ReadAllLines(regexesFile);
            List<int> exclude = new List<int>();

            int rxCount = 100; //number of strings to be generated for each regex
            for (int i = 1; i < regexes.Length; i++)
                foreach (string s in rex.GenerateMembers(RegexOptions.Multiline, rxCount, regexes[i]))
                    //if (!exclude.Contains(i))
                    Assert.IsTrue(Rex.RexEngine.IsMatch(s, regexes[i], RegexOptions.Multiline), "regex on line " + i + " in Samples/regexes.txt");
        }