예제 #1
0
        public FunSymbol FunSymbolByName(string name)
        {
            FunSymbol fn;

            if (modelFunsByName.TryGetValue(name, out fn))
            {
                return(fn);
            }
            fn            = new FunSymbol();
            fn.Name       = name;
            fn.AllSymbols = this.modelFuns;
            this.modelFuns.Add(fn);
            modelFunsByName.Add(name, fn);
            return(fn);
        }
예제 #2
0
 private IEnumerable <Common> Filter()
 {
     foreach (var fs in Fun.AllSymbols)
     {
         FunSymbol ffs = new FunSymbol();
         ffs.Name = fs.Name;
         foreach (var fapp in fs.Apps)
         {
             foreach (var a in fapp.Args)
             {
                 if (a == Value)
                 {
                     ffs.Apps.Add(fapp);
                     break;
                 }
             }
         }
         if (ffs.Apps.Count > 0)
         {
             yield return(ffs);
         }
     }
 }
예제 #3
0
        public Partition PartitionByName(string name)
        {
            Partition part;

            if (modelPartsByName.TryGetValue(name, out part))
            {
                return(part);
            }
            part       = new Partition();
            part.Id    = name;
            part.model = this;
            modelPartsByName.Add(name, part);

            FunSymbol consts = FunSymbolByName(name);
            FunApp    fapp   = new FunApp();

            fapp.Fun   = consts;
            fapp.Args  = new Partition[0];
            fapp.Value = part;
            consts.Apps.Add(fapp);
            part.Values.Add(fapp);

            return(part);
        }