Microsoft.Automata.RegexToSMTConverter.ConvertNodeLoop C# (CSharp) Méthode

ConvertNodeLoop() private méthode

private ConvertNodeLoop ( RegexNode node ) : void
node System.Text.RegularExpressions.RegexNode
Résultat void
        private void ConvertNodeLoop(RegexNode node)
        {
            var child = node._children[0];
            int m = node._m;
            int n = node._n;
            if (m == 1 && n == 1) //trivial case: r{1,1} = r
            {
                ConvertNode(child);
            }
            else if (m == 0 && n == 1) //case: ?
            {
                Write("(re-option ");
                ConvertNode(child);
                Write(")");
            }
            else if (m == 0 && n == int.MaxValue) //case: *
            {
                Write("(re-star ");
                ConvertNode(child);
                Write(")");
            }
            else if (m == 1 && n == int.MaxValue) //case: +
            {
                Write("(re-plus ");
                ConvertNode(child);
                Write(")");
            }
            else if (n == int.MaxValue) //case {m,}
            {
                Write(string.Format("(re-concat ((_ re-loop {0} {0}) ",m));
                ConvertNode(child);
                Write(") (re-star ");
                ConvertNode(child);
                Write("))");
            }
            else //general case {m,n}
            {
                Write(string.Format("((_ re-loop {0} {1}) ", m, n));
                ConvertNode(child);
                Write(")");
            }
        }