Exemplo n.º 1
0
        private static string GetNonFinalRuleInfo <S>(int k, IAutomaton <S> aut, ITransducer <S> trans, int source, int target, List <S> rules, Func <S, string> describeS = null)
        {
            if (describeS == null)
            {
                describeS = aut.DescribeLabel;
            }

            string lab  = "";
            string info = "";

            for (int i = 0; i < rules.Count; i++)
            {
                lab += (lab == "" ? "" : ", ") + describeS(rules[i]);
                if (trans != null)
                {
                    info += string.Format("Rule{0}.Guard = \"{1}\" Rule{0}.Update = \"{2}\" Rule{0}.Yields = \"{3}\" ", i + 1,
                                          EncodeChars(trans.DescribeGuard(rules[i])),
                                          EncodeChars(trans.DescribeUpdate(rules[i])),
                                          EncodeChars(trans.DescribeYields(rules[i])));
                }
            }
            if (k >= 0 && lab.Length > k)
            {
                lab = lab.Substring(0, k) + "...";
            }
            lab = EncodeChars(lab);
            if (lab.Length > 50)
            {
                info += string.Format(" HiddenLabel = \"{0}\"", lab);
                lab   = "...";
            }
            return(string.Format("<Link Source=\"{0}\" Target=\"{1}\" Label=\"{2}\" Category=\"NonepsilonTransition\" {3}/>", source, target, lab, info));
        }
Exemplo n.º 2
0
        private static string GetFinalRuleInfo <S>(int k, ITransducer <S> trans, int state, List <S> rules)
        {
            if (trans == null)
            {
                throw new AutomataException(AutomataExceptionKind.InternalError);
            }

            string lab  = "";
            string info = "";

            for (int i = 0; i < rules.Count; i++)
            {
                lab  += (lab == "" ? "" : ", ") + trans.DescribeLabel(rules[i]);
                info += string.Format("Rule{0}.Guard = \"{1}\" Rule{0}.Yields = \"{2}\" ", i + 1,
                                      EncodeChars(trans.DescribeGuard(rules[i])), EncodeChars(trans.DescribeYields(rules[i])));
            }
            if (k >= 0 && lab.Length > k)
            {
                lab = lab.Substring(0, k) + "...";
            }
            lab = EncodeChars(lab);
            return(string.Format("<Link Source=\"{0}\" Target=\"f{0}\" Label=\"{1}\" Category=\"FinalLabel\" {2}/>", state, lab, info));
        }