using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using glue.Debugging; using agree; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// /// /// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class MainClass { /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// /// /// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// static void Main(string[] args) { for (int i = 0; i < args.Length; i++) if (args[i].StartsWith("--")) args[i] = args[i].Substring(1); bool f_verbose = args.Contains("-v"); if (f_verbose) args = args.Where(e => e != "-v").ToArray(); if (args.Contains("-help") || args.Contains("-?")) { Console.WriteLine(helpmsg); return; } String filename = args.FirstOrDefault(e => e[0] != '-'); if (filename == null) { Console.WriteLine(helpmsg); return; } SysObj so = SysObj.Instance; Grammar g; using (TimingReport trx = new TimingReport(Console.Out, "Processing script file")) g = new SysCommands.CmdTokLoadGrammar(so, Path.GetFileNameWithoutExtension(filename), filename).Task.Result; //using (TimingReport tr = new TimingReport(Console.Out, "Load types")) // TypeMgr.LoadTypes(tdlg.fd); //using (TimingReport tr = new TimingReport(Console.Out, "Check for cycle")) // TypeMgr.CheckForCycle(); //using (TimingReport tr = new TimingReport(Console.Out, "Edge count")) // Console.WriteLine(TypeMgr.EdgeCount()); //using (TimingReport tr = new TimingReport(Console.Out, "Checking for redundant links")) // TypeMgr.CheckRedundantLinks(); //using (TimingReport tr = new TimingReport(Console.Out, String.Format("computing closure for {0} user-defined types...", TypeMgr.type_dict.Count))) // TypeMgr.EmbedBcpo(); //using (TimingReport tr = new TimingReport(Console.Out, "Checking bit codes")) // TypeMgr.CheckConjoinedParents(null); //using (TimingReport tr = new TimingReport(Console.Out, "Checking for redundant links")) // TypeMgr.CheckForCycle(); //using (TimingReport tr = new TimingReport(Console.Out, "Check GLBs")) // TfsTypeMgr.CheckGlb(); //using (TimingReport tr = new TimingReport(Console.Out, "Edge count")) // Console.WriteLine(TypeMgr.EdgeCount()); //using (TimingReport tr = new TimingReport(Console.Out, "Load features")) // TypeMgr.LoadFeatures(); //using (TimingReport tr = new TimingReport(Console.Out, "Resolve special types")) // TypeMgr.ResolveSpecialTypes(); //using (TimingReport tr = new TimingReport(Console.Out, "Check for unused GLBs")) // TypeMgr.CheckForUnusedGlbs(); //using (TimingReport tr = new TimingReport(Console.Out, "Checking feature flags")) // TfsTypeMgr.CheckFeaturesFlag(); //using (TimingReport tr = new TimingReport(Console.Out, "Load type definitions")) // g.LoadTypeDefinitions(); //using (TimingReport tr = new TimingReport(Console.Out, "Make type definitions well-formed")) //g.ExpandTypeDefinitions(); #if false using (TimingReport tr = new TimingReport(Console.Out, "Checking for orphaned edges")) TypeMgr.CheckOrphanedEdges(Console.Out); using (TimingReport tr = new TimingReport(Console.Out, "GLB algs")) TypeMgr.CheckGlbAlgs(); TfsTypeMgr.DisplayTree(true); #endif Console.WriteLine("Number of bare types: {0}", g.tm.AllTypes.Count(t => t.IsBare)); Tray tr = g.loadtray; int c_bare_use = 0; foreach (ConstraintPool cp in tr.Pools) { Console.WriteLine("{0} : {1} edges", cp.Feature.ToUpper(), cp.Count); foreach (var grp in cp.Edges.Where(e => tr.tm.GetEdgeType(e.FlagsId).IsBare && !e.IsCoreferenced) .GroupBy(e => tr.tm.GetEdgeType(e.FlagsId))) { Console.WriteLine("\t{0} : {1}", grp.Key.ToString(), grp.Count()); c_bare_use += grp.Count(); } } Console.WriteLine("Total bare edges (includes garbage): {0}", c_bare_use); if (Debugger.IsAttached) { Console.WriteLine("done! press <enter> to exit"); Console.ReadLine(); } Environment.Exit(0); } static String helpmsg = @"usage: example: tgcs-test filename "; };