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
";
};