コード例 #1
0
 public ArcStandardConfig(Sent sent, bool reserve, RandomNumberGenerator rng)
 {
     _sent = sent;
     Stack = new ParseForest();
     Stack.PushBack(Entry.Root());
     Buffer = new ParseForest(sent, reserve);
     Apply(Op.shift, null);
     _rng = rng;
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: RonNewcomb/complish
        // ExtensionMethods /////////////////////////

        public static string PrintPyramid(this ParseForest tree, bool force = false)
        {
            string retval = Environment.NewLine;

            ParseTreeNode[, ,] P = tree.P;
            int n = tree.n, r = tree.r;

            for (int k = n - 1; k >= 0; k--)
            {
                foreach (int i in 1.to(n - k))
                {
                    retval += "\t";
                    //string retval = "";
                    foreach (int nonterminals in 1.to(r))
                    {
                        NonTerminalSymbol nt = (NonTerminalSymbol)nonterminals;
                        if (P[i, k, nonterminals].match && nt != NonTerminalSymbol.comma)
                        {
                            retval += (retval == "" ? "" : ",") + (nt == NonTerminalSymbol.colon ? ":" : nt.ToString());
                        }
                    }
                    retval += (retval.Length > 10 ? "*" : retval);
                }
                retval += Environment.NewLine;
            }
            foreach (int i in 1.to(n))
            {
                retval += ("\t" + tree.a[i]);
            }
            retval += Environment.NewLine;

            // is valid?
            if (tree.Count == 0)
            {
                retval += Environment.NewLine;
            }
            else if (tree.Count == 1)
            {
                retval += "IS a member of language as a " + tree.SentenceType.ToString();
            }
            else
            {
                retval += "is a member of language but ambiguous, with" + tree.Count + " interpretations";
            }
            return(retval);
        }