Example #1
0
        private float CollectTaxesFrom(Stratum layer)
        {
            var collectedCoins = Math.Min(layer.Man * Tax, layer.Founds);

            layer.Founds -= collectedCoins;
            return(collectedCoins);
        }
Example #2
0
 public void BeginUnapplyStratum(Stratum stratum, Word input)
 {
     ((Trace)input.CurrentTrace).Children.Add(new Trace(TraceType.StratumAnalysisInput, stratum)
     {
         Input = input
     });
 }
Example #3
0
 public void ApplicableTemplatesNotApplied(Stratum stratum, Word word)
 {
     ((Trace)word.CurrentTrace).Children.Add(new Trace(TraceType.StratumSynthesisOutput, stratum)
     {
         Output = word, FailureReason = FailureReason.PartialParse
     });
 }
Example #4
0
 public void LexicalLookup(Stratum stratum, Word input)
 {
     ((Trace)input.CurrentTrace).Children.Add(new Trace(TraceType.LexicalLookup, stratum)
     {
         Input = input.DeepClone()
     });
 }
Example #5
0
        public void Sync_SampleGroup_Delete()
        {
            var init     = new DatabaseInitializer();
            var fromPath = base.GetTempFilePath(".crz3", "Sync_SampleGroup_Delete_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sync_SampleGroup_Delete_toFile");

            using var fromDb = init.CreateDatabaseFile(fromPath);
            var cruiseID = init.CruiseID;
            var saleID   = init.SaleID;

            var newStratum = new Stratum
            {
                CruiseID    = cruiseID,
                StratumID   = Guid.NewGuid().ToString(),
                StratumCode = "newStratumCode1",
            };

            fromDb.Insert(newStratum);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            fromDb.Delete(newStratum);

            var syncer      = new DeleteSysncer();
            var syncOptions = new CruiseSyncOptions();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.GetRowCount("Stratum", "WHERE StratumID = @p1", newStratum.StratumID)
            .Should().Be(0);
        }
        public Workshop(Manufacture wares, Stratum artisans, Treasury startup = null) : base(artisans)
        {
            Production = wares;
            if (startup is Treasury && startup != null)
            {
                Gold            = startup.Gold;
                Food            = startup.Food;
                Fuel            = startup.Fuel;
                SourceMaterials = startup.SourceMaterials;
            }
            switch (Production)
            {
            case Manufacture.Catridges:
                Cost             = CatridgeCost;
                ManDailyProgress = CatridgerPerManDay;
                break;

            case Manufacture.Weapon:
                Cost             = EquipmentCost;
                ManDailyProgress = EquipPerManDay;
                break;

            case Manufacture.None:
            default:
                throw new InvalidCastException("Что производит эта мастерская?");
            }
        }
        void _ReadStrata(
            DGObjects objs,
            string tableNameSQL,
            string conditionSQL,
            string orderSQL)
        {
            ReadRawData(objs, tableNameSQL, orderSQL, conditionSQL);
            DataTable table = objs.rawDataSet.Tables[0];
            foreach (DataRow row in table.Rows)
            {
                if (IsDbNull(row, "ID"))
                    continue;

                Stratum st = new Stratum(row);
                st.Name = ReadString(row, "Name");
                st.FullName = ReadString(row, "FullName");
                st.Description = ReadString(row, "Description");

                st.ID = ReadInt(row, "ID").Value;
                st.GeologyAge = ReadString(row, "GeologicalAge");
                st.FormationType = ReadString(row, "FormationType");
                st.Compaction = ReadString(row, "Compaction");
                st.ElevationRange = ReadString(row, "ElevationOfStratumBottom");
                st.ThicknessRange = ReadString(row, "Thickness");

                st.shape = ReadShape(row);

                objs[st.key] = st;
            }
        }
        protected void OnStrataButtonClicked(object sender, EventArgs e)
        {
            Button  strataButton = (Button)sender;
            Stratum stratumInfo  = (Stratum)strataButton.Tag;

            DisplayTallyPanel(stratumInfo);
        }
        public void SyncDesign_Test_PushStratum()
        {
            var(master, compDbs) = MakeFiles(numComponents: 2);

            var components = compDbs.Select((x, i) => { return(new ComponentFile()
                {
                    Database = x, Component_CN = i
                }); })
                             .ToArray();

            var mastSt1 = new Stratum()
            {
                Code   = "nst1",
                Method = "100",
            };

            master.Insert(mastSt1, keyValue: 1000);

            MergeSyncWorker.SyncDesign(
                master,
                components,
                new System.Threading.CancellationToken(),
                (IProgress <int>)null,
                TestMergeLogWriter);

            var comp1   = compDbs.First();
            var compSt1 = comp1.From <Stratum>().Where("Code = @p1").Query(mastSt1.Code).Single();

            compSt1.Should().NotBeNull();
            compSt1.Stratum_CN.Should().Be(mastSt1.Stratum_CN);
        }
Example #10
0
 public void EndUnapplyStratum(Stratum stratum, Word output)
 {
     ((Trace)output.CurrentTrace).Children.Add(new Trace(TraceType.StratumAnalysisOutput, stratum)
     {
         Output = output
     });
 }
Example #11
0
 public Shop(Stratum masters)
 {
     if (masters.Class.Name != "ремесленники")
     {
         throw new InvalidCastException("В мастерских могут работать только ремесленники");
     }
     Crafters = masters;
 }
Example #12
0
 public StratumDTO(Stratum st)
 {
     GeologyAge     = st.GeologyAge;
     FormationType  = st.FormationType;
     Compaction     = st.Compaction;
     ElevationRange = st.ElevationRange;
     ThicknessRange = st.ThicknessRange;
 }
Example #13
0
        public void LexicalLookup(Stratum stratum, Word input)
        {
            var trace = new XElement("LexLookupTrace",
                                     new XElement("Stratum", stratum.Name),
                                     new XElement("Shape", input.Shape.ToRegexString(stratum.CharacterDefinitionTable, true)));

            ((XElement)input.CurrentTrace).Add(trace);
        }
        public void DeleteStratum(Stratum stratum)
        {
            if (stratum is null)
            {
                throw new ArgumentNullException(nameof(stratum));
            }

            DeleteStratum(stratum.StratumCode);
        }
        public void AddStratum(Stratum stratum)
        {
            if (stratum is null)
            {
                throw new ArgumentNullException(nameof(stratum));
            }

            stratum.StratumID ??= Guid.NewGuid().ToString();
            Database.Execute2(
                @"INSERT INTO Stratum (
    CruiseID,
    StratumID,
    StratumCode,
    Description,
    Method,
    BasalAreaFactor,
    FixedPlotSize,
    KZ3PPNT,
    SamplingFrequency,
    Hotkey,
    FBSCode,
    YieldComponent,
    FixCNTField,
    CreatedBy
) VALUES (
    @CruiseID,
    @StratumID,
    @StratumCode,
    @Description,
    @Method,
    @BasalAreaFactor,
    @FixedPlotSize,
    @KZ3PPNT,
    @SamplingFrequency,
    @HotKey,
    @FBSCode,
    @YieldComponent,
    @FixCNTField,
    @DeviceID
);", new
            {
                CruiseID,
                stratum.StratumID,
                stratum.StratumCode,
                stratum.Description,
                stratum.Method,
                stratum.BasalAreaFactor,
                stratum.FixedPlotSize,
                stratum.KZ3PPNT,
                stratum.SamplingFrequency,
                stratum.HotKey,
                stratum.FBSCode,
                stratum.YieldComponent,
                stratum.FixCNTField,
                DeviceID,
            });
        }
Example #16
0
        public static string GetName(Stratum StratumEnum)
        {
            switch (StratumEnum)
            {
            case Stratum.Unspecified:
                return("Unspecified");

            case Stratum.Primary:
                return("Primary");

            case Stratum.Secondary:
                return("Secondary");

            case Stratum.Secondary3:
                return("Secondary 3");

            case Stratum.Secondary4:
                return("Secondary 4");

            case Stratum.Secondary5:
                return("Secondary 5");

            case Stratum.Secondary6:
                return("Secondary 6");

            case Stratum.Secondary7:
                return("Secondary 7");

            case Stratum.Secondary8:
                return("Secondary 8");

            case Stratum.Secondary9:
                return("Secondary 9");

            case Stratum.Secondary10:
                return("Secondary 10");

            case Stratum.Secondary11:
                return("Secondary 11");

            case Stratum.Secondary12:
                return("Secondary 12");

            case Stratum.Secondary13:
                return("Secondary 13");

            case Stratum.Secondary14:
                return("Secondary 14");

            case Stratum.Secondary15:
                return("Secondary 15");

            default:
                return("Unknown");
            }
        }
Example #17
0
        public Tree CreateNewTreeEntry(Stratum stratum
                                       , SampleGroup sg
                                       , TreeDefaultValueDO tdv
                                       , bool isMeasure)
        {
            var tree = CreateNewTreeEntryInternal(stratum, sg, tdv, isMeasure);

            tree.TreeNumber = GetNextNonPlotTreeNumber();
            return(tree);
        }
Example #18
0
        private void logsButton_Click(object sender, EventArgs e)
        {
            using (var ds = new DAL())
            {
                var cuttingUnit = new CuttingUnit()
                {
                    DAL  = ds,
                    Code = "01"
                };
                cuttingUnit.Save();

                var stratum = new Stratum()
                {
                    DAL  = ds,
                    Code = "01"
                };
                stratum.Save();

                var fieldSetup = new LogFieldSetupDO()
                {
                    DAL        = ds,
                    Stratum_CN = stratum.Stratum_CN,
                    Field      = LOG.LOGNUMBER,
                    Heading    = LOG.LOGNUMBER
                };
                fieldSetup.Save();

                fieldSetup = new LogFieldSetupDO()
                {
                    DAL        = ds,
                    Stratum_CN = stratum.Stratum_CN,
                    Field      = LOG.GRADE,
                    Heading    = LOG.GRADE
                };
                fieldSetup.Save();

                var controller = new ApplicationController(null);
                var tree       = new Tree()
                {
                    DAL            = ds,
                    CuttingUnit_CN = cuttingUnit.CuttingUnit_CN,
                    Stratum_CN     = stratum.Stratum_CN,
                    TreeNumber     = 1
                };
                tree.Save();

                var dataService = new ILogDataService(tree, (RegionLogInfo)null, ds);

                using (var view = new FormLogs(dataService))
                {
                    view.ShowDialog();
                }
            }
        }
Example #19
0
        // ===============================[ Construction ]=====================================

        /// <summary>
        /// Construct a stratabase with the number of override layers specified. The number of override layers cannot be
        /// changed after construction. Result will be a stratabase with 1 baseline laye and {<paramref name="overrideLayerCount"/>}
        /// override layers
        /// </summary>
        public Stratabase(int overrideLayerCount)
        {
            this.OverrideLayerCount = overrideLayerCount;
            m_overrideStorageLayers = new Stratum[overrideLayerCount];

            m_baselineStorageLayer = new Stratum();
            for (int layer = 0; layer < overrideLayerCount; ++layer)
            {
                m_overrideStorageLayers[layer] = new Stratum();
            }
        }
Example #20
0
        private void StrataView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            int row = e.RowIndex;
            int col = e.ColumnIndex;

            if (row >= 0)
            {
                if (row >= sl.Count) // Is a new stratum
                {
                    INCCDB.Descriptor        candidate = new INCCDB.Descriptor(StrataView[0, row].Value.ToString(), StrataView[0, row].Value.ToString());
                    Stratum                  st        = new Stratum();
                    INCCDB.StratumDescriptor newst     = new INCCDB.StratumDescriptor(candidate, st);
                    AcquireParameters        acq       = NC.App.DB.LastAcquire();
                    string curdet = acq.detector_id;
                    if (!String.IsNullOrEmpty(StrataView[0, row].Value.ToString()))
                    {
                        NC.App.DB.StrataList().Add(newst);
                        NC.App.DB.AssociateStratum(NC.App.DB.Detectors.Find(di => string.Compare(di.Id.DetectorName, curdet, true) == 0), candidate, st);
                    }
                    sl.Add(newst);
                }
                else
                {
                    INCCDB.StratumDescriptor changed = sl.ElementAt(row);
                    double d;
                    switch (col)
                    {
                    case 1:
                        Double.TryParse((StrataView[col, row]).Value.ToString(), out d);
                        changed.Stratum.bias_uncertainty = d;
                        changed.Stratum.modified         = true;
                        StrataView[col, row].Value       = d.ToString("F2");
                        break;

                    case 2:
                        Double.TryParse((StrataView[col, row]).Value.ToString(), out d);
                        changed.Stratum.random_uncertainty = d;
                        changed.Stratum.modified           = true;
                        StrataView[col, row].Value         = d.ToString("F2");
                        break;

                    case 3:
                        Double.TryParse((StrataView[col, row]).Value.ToString(), out d);
                        changed.Stratum.systematic_uncertainty = d;
                        StrataView[col, row].Value             = d.ToString("F2");
                        changed.Stratum.modified = true;
                        break;
                    }
                }
            }
        }
Example #21
0
            // This doesn't **need** to be here, but I like having it next to it's opposite above
            public static Stratum FromStratumData(Stratabase sb, Dictionary <Guid, Dictionary <string, object> > stratumData)
            {
                var output = new Stratum();

                if (stratumData != null)
                {
                    foreach (KeyValuePair <Guid, Dictionary <string, object> > data in stratumData)
                    {
                        output.Add(data.Key, new PseudoPropertyBag(sb, data.Value));
                    }
                }

                return(output);
            }
Example #22
0
        private static string GetReferenceId(byte[] bytes, Stratum stratum, byte version)
        {
            var val = string.Empty;

            switch (stratum)
            {
            case Stratum.Unspecified:
            case Stratum.PrimaryReference:
                val += (char)bytes[ReferenceIdStartIndex + 0];
                val += (char)bytes[ReferenceIdStartIndex + 1];
                val += (char)bytes[ReferenceIdStartIndex + 2];
                val += (char)bytes[ReferenceIdStartIndex + 3];
                break;

            case Stratum.SecondaryReference:
                switch (version)
                {
                case 3:         // Version 3, Reference ID is an IPv4 timeServerAddress
                    var address = bytes[ReferenceIdStartIndex + 0] + "." +
                                  bytes[ReferenceIdStartIndex + 1] + "." +
                                  bytes[ReferenceIdStartIndex + 2] + "." +
                                  bytes[ReferenceIdStartIndex + 3];
                    try
                    {
                        var host = Dns.GetHostEntry(address);
                        val = host.HostName + " (" + address + ")";
                    }
                    catch (Exception)
                    {
                        val = address;
                    }

                    break;

                case 4:         // Version 4, Reference ID is the timestamp of last update
                    val = new Timestamp(bytes, ReferenceIdStartIndex)
                          .ToDateTime()
                          .ToString(CultureInfo.InvariantCulture);
                    break;

                default:
                    val = "N/A";
                    break;
                }

                break;
            }

            return(val);
        }
Example #23
0
        public byte GetStratum(Stratum stratum)
        {
            switch (stratum)
            {
            case Stratum.PrimaryServer: { return(1); }

            case Stratum.SecondaryServer: { return(15); }

            case Stratum.Unsynchronized: { return(16); }

            case Stratum.Reserved: { return(255); }

            case Stratum.UnspecifiedOrInvalid:
            default: { return(0); }
            }
        }
Example #24
0
        private LexEntry AddEntry(string gloss, FeatureStruct syntacticFS, Stratum stratum, params string[] forms)
        {
            var entry = new LexEntry
            {
                SyntacticFeatureStruct = syntacticFS,
                Gloss     = gloss,
                IsPartial = syntacticFS.IsEmpty
            };

            foreach (string form in forms)
            {
                entry.Allomorphs.Add(new RootAllomorph(new Segments(stratum.CharacterDefinitionTable, form)));
            }
            stratum.Entries.Add(entry);
            Entries[gloss] = entry;
            return(entry);
        }
Example #25
0
        public void PopulateHotKeyLookupTest()
        {
            var stratum = new Stratum();

            var counts = new CountTree[]
            { new CountTree()
              {
                  Tally = new TallyDO()
                  {
                      Hotkey = "A"
                  }
              },
              new CountTree()
              {
                  Tally = new TallyDO()
                  {
                      Hotkey = "Banana"
                  }
              },
              new CountTree()
              {
                  Tally = new TallyDO()
                  {
                      Hotkey = "cat"
                  }
              } };

            var samplegroups = new SampleGroup[] {
                new SampleGroup()
                {
                    Counts = counts
                }
            };

            stratum.SampleGroups = new List <SampleGroup>(samplegroups);

            stratum.HotKeyLookup.Should().NotBeNull();

            stratum.PopulateHotKeyLookup();
            stratum.HotKeyLookup.Should().NotBeNull();
            stratum.HotKeyLookup.ContainsKey('A').Should().BeTrue();
            stratum.HotKeyLookup.ContainsKey('B').Should().BeTrue();
            stratum.HotKeyLookup.ContainsKey('C').Should().BeTrue();
            stratum.HotKeyLookup.ContainsKey('D').Should().BeFalse();
        }
Example #26
0
        private ReferenceIdentifier GetReferenceIdentifier(Stratum stratum, byte[] input)
        {
            var result = new ReferenceIdentifier();

            if (stratum == Stratum.PrimaryServer)
            {
                var parseSuccess = Enum.TryParse(Encoding.ASCII.GetString(input), true, out PrimaryReferenceIdentifier yolo);
                if (parseSuccess)
                {
                    result.PrimaryServerType = yolo;
                }
            }
            if (stratum == Stratum.SecondaryServer)
            {
                result.SecondaryServerSourceIpAddress          = new IPAddress(input);
                result.SecondaryServerMD5HashFirst32BitsOfIPv6 = Convert.ToBase64String(input);
            }
            return(result);
        }
        public void Sync_Stratum_Update_StratumCode()
        {
            var fromPath = base.GetTempFilePath(".crz3", "Stratum_Updated_stCode_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Stratum_Update_stCode_toFile");

            var syncOptions = new CruiseSyncOptions();

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            // initialize source database
            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);
            var stratumID = Guid.NewGuid().ToString();
            var stratum   = new Stratum()
            {
                CruiseID    = cruiseID,
                StratumID   = stratumID,
                StratumCode = "10",
                Method      = "100",
            };

            fromDb.Insert(stratum);

            // initialize dest database
            // as exact copy of source database
            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            // modify stratum code and save to source database
            stratum.StratumCode = "11";
            fromDb.Update(stratum);

            // run sync
            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            var stratumAgain = toDb.From <Stratum>().Where("StratumID =  @p1")
                               .Query(stratumID).FirstOrDefault();

            stratumAgain.StratumCode.Should().BeEquivalentTo(stratum.StratumCode);
        }
        public void UpdateStratum(Stratum stratum)
        {
            if (stratum is null)
            {
                throw new ArgumentNullException(nameof(stratum));
            }

            Database.Execute2(
                @"UPDATE Stratum SET
    Description = @Description,
    Method = @Method,
    BasalAreaFactor = @BasalAreaFactor,
    FixedPlotSize = @FixedPlotSize,
    KZ3PPNT = @KZ3PPNT,
    SamplingFrequency = @SamplingFrequency,
    FBSCode = @FBSCode,
    YieldComponent = @YieldComponent,
    FixCNTField = @FixCNTField
WHERE StratumID = @StratumID;", stratum);
        }
Example #29
0
        internal Tree CreateNewTreeEntryInternal(Stratum stratum
                                                 , SampleGroup sg
                                                 , TreeDefaultValueDO tdv
                                                 , bool isMeasure)
        {
            Tree newTree = new Tree(DataStore)
            {
                TreeCount      = 0,
                CountOrMeasure = (isMeasure) ? "M" : "C",
                CuttingUnit    = CuttingUnit
            };

            if (sg != null)
            {
                newTree.SampleGroup = sg;
                if (tdv == null)
                {
                    if (sg.TreeDefaultValues.IsPopulated == false)
                    {
                        sg.TreeDefaultValues.Populate();
                    }
                    if (sg.TreeDefaultValues.Count == 1)
                    {
                        tdv = sg.TreeDefaultValues.FirstOrDefault();//TODO should be SingleOrDefault
                    }
                }
            }
            if (stratum != null)
            {
                newTree.Stratum = stratum;
            }
            if (tdv != null)
            {
                newTree.SetTreeTDV(tdv);
            }

            newTree.Validate();
            //newTree.Save();

            return(newTree);
        }
Example #30
0
        public void GetCountByHotKeyTest()
        {
            var stratum = new Stratum();

            var counts = new CountTree[]
            { new CountTree()
              {
                  Tally = new TallyDO()
                  {
                      Hotkey = "A"
                  }
              },
              new CountTree()
              {
                  Tally = new TallyDO()
                  {
                      Hotkey = "Banana"
                  }
              },
              new CountTree()
              {
                  Tally = new TallyDO()
                  {
                      Hotkey = "cat"
                  }
              } };

            var samplegroups = new SampleGroup[] {
                new SampleGroup()
                {
                    Counts = counts
                }
            };

            stratum.SampleGroups = new List <SampleGroup>(samplegroups);

            stratum.GetCountByHotKey('A').Should().Be(counts[0]);
            stratum.GetCountByHotKey('B').Should().Be(counts[1]);
            stratum.GetCountByHotKey('C').Should().Be(counts[2]);
            stratum.GetCountByHotKey('0').Should().BeNull();
        }
Example #31
0
 public void LexicalLookup(Stratum stratum, Word input)
 {
     ((Trace) input.CurrentTrace).Children.Add(new Trace(TraceType.LexicalLookup, stratum) {Input = input.DeepClone()});
 }
Example #32
0
 public void BeginUnapplyStratum(Stratum stratum, Word input)
 {
     ((Trace) input.CurrentTrace).Children.Add(new Trace(TraceType.StratumAnalysisInput, stratum) {Input = input});
 }
Example #33
0
 public void NonFinalTemplateAppliedLast(Stratum stratum, Word word)
 {
     ((Trace) word.CurrentTrace).Children.Add(new Trace(TraceType.StratumSynthesisOutput, stratum) {Output = word, FailureReason = FailureReason.PartialParse});
 }
Example #34
0
        private void StrataView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            int row = e.RowIndex;
            int col = e.ColumnIndex;

            if (row >= 0)
            {
                if (row >= sl.Count) // Is a new stratum
                {
                    INCCDB.Descriptor candidate = new INCCDB.Descriptor(StrataView[0, row].Value.ToString(), StrataView[0, row].Value.ToString());
                    Stratum st = new Stratum();
                    INCCDB.StratumDescriptor newst = new INCCDB.StratumDescriptor(candidate, st);
                    AcquireParameters acq = NC.App.DB.LastAcquire();
                    string curdet = acq.detector_id;
                    if (!String.IsNullOrEmpty(StrataView[0, row].Value.ToString()))
                    {
                        NC.App.DB.StrataList().Add(newst);
                        NC.App.DB.AssociateStratum(NC.App.DB.Detectors.Find(di => string.Compare(di.Id.DetectorName, curdet, true) == 0), candidate, st);
                    }
                    sl.Add(newst);
                }
                else
                {
                    INCCDB.StratumDescriptor changed = sl.ElementAt(row);
                    double d;
                    switch (col)
                    {
                        case 1:
                            Double.TryParse((StrataView[col, row]).Value.ToString(), out d);
                            changed.Stratum.bias_uncertainty = d;
                            changed.Stratum.modified = true;
                            StrataView[col,row].Value = d.ToString("F2");
                            break;
                        case 2:
                            Double.TryParse((StrataView[col, row]).Value.ToString(), out d);
                            changed.Stratum.random_uncertainty = d;
                            changed.Stratum.modified = true;
                            StrataView[col, row].Value = d.ToString("F2");
                            break;
                        case 3:
                            Double.TryParse((StrataView[col, row]).Value.ToString(), out d);
                            changed.Stratum.systematic_uncertainty = d;
                            StrataView[col, row].Value = d.ToString("F2");
                            changed.Stratum.modified = true;
                            break;
                    }
                }
            }
        }
Example #35
0
 private LexEntry AddEntry(string gloss, FeatureStruct syntacticFS, Stratum stratum, params string[] forms)
 {
     var entry = new LexEntry
     {
         SyntacticFeatureStruct = syntacticFS,
         Gloss = gloss,
         IsPartial = syntacticFS.IsEmpty
     };
     foreach (string form in forms)
         entry.Allomorphs.Add(new RootAllomorph(new Segments(stratum.CharacterDefinitionTable, form)));
     stratum.Entries.Add(entry);
     Entries[gloss] = entry;
     return entry;
 }
Example #36
0
        public void FixtureSetUp()
        {
            SpanFactory = new ShapeSpanFactory();
            TraceManager = new TraceManager();
            var phonologicalFeatSys = new FeatureSystem
            {
                new SymbolicFeature("voc", new FeatureSymbol("voc+", "+"), new FeatureSymbol("voc-", "-")),
                new SymbolicFeature("cons", new FeatureSymbol("cons+", "+"), new FeatureSymbol("cons-", "-")),
                new SymbolicFeature("high", new FeatureSymbol("high+", "+"), new FeatureSymbol("high-", "-")),
                new SymbolicFeature("low", new FeatureSymbol("low+", "+"), new FeatureSymbol("low-", "-")),
                new SymbolicFeature("back", new FeatureSymbol("back+", "+"), new FeatureSymbol("back-", "-")),
                new SymbolicFeature("round", new FeatureSymbol("round+", "+"), new FeatureSymbol("round-", "-")),
                new SymbolicFeature("vd", new FeatureSymbol("vd+", "+"), new FeatureSymbol("vd-", "-")),
                new SymbolicFeature("asp", new FeatureSymbol("asp+", "+"), new FeatureSymbol("asp-", "-")),
                new SymbolicFeature("del_rel", new FeatureSymbol("del_rel+", "+"), new FeatureSymbol("del_rel-", "-")),
                new SymbolicFeature("ATR", new FeatureSymbol("ATR+", "+"), new FeatureSymbol("ATR-", "-")),
                new SymbolicFeature("strident", new FeatureSymbol("strident+", "+"), new FeatureSymbol("strident-", "-")),
                new SymbolicFeature("cont", new FeatureSymbol("cont+", "+"), new FeatureSymbol("cont-", "-")),
                new SymbolicFeature("nasal", new FeatureSymbol("nasal+", "+"), new FeatureSymbol("nasal-", "-")),
                new SymbolicFeature("poa", new FeatureSymbol("bilabial"), new FeatureSymbol("labiodental"), new FeatureSymbol("alveolar"), new FeatureSymbol("velar"))
            };
            phonologicalFeatSys.Freeze();

            var syntacticFeatSys = new SyntacticFeatureSystem
            {
                new SymbolicFeature("foo", new FeatureSymbol("foo+", "+"), new FeatureSymbol("foo-", "-")),
                new SymbolicFeature("baz", new FeatureSymbol("baz+", "+"), new FeatureSymbol("baz-", "-")),
                new SymbolicFeature("num", new FeatureSymbol("sg"), new FeatureSymbol("pl")),
                new SymbolicFeature("pers", new FeatureSymbol("1"), new FeatureSymbol("2"), new FeatureSymbol("3"), new FeatureSymbol("4")),
                new SymbolicFeature("tense", new FeatureSymbol("past"), new FeatureSymbol("pres")),
                new SymbolicFeature("evidential", new FeatureSymbol("witnessed")),
                new SymbolicFeature("aspect", new FeatureSymbol("perf"), new FeatureSymbol("impf")),
                new SymbolicFeature("mood", new FeatureSymbol("active"), new FeatureSymbol("passive")),
                new SymbolicFeature("fum", new FeatureSymbol("fum+", "+"), new FeatureSymbol("fum-", "-")),
                new SymbolicFeature("bar", new FeatureSymbol("bar+", "+"), new FeatureSymbol("bar-", "-"))
            };
            syntacticFeatSys.AddPartsOfSpeech(new FeatureSymbol("N", "Noun"), new FeatureSymbol("V", "Verb"), new FeatureSymbol("TV", "Transitive Verb"),
                new FeatureSymbol("IV", "Intransitive Verb"), new FeatureSymbol("A", "Adjective"));
            Head = syntacticFeatSys.AddHeadFeature();
            Foot = syntacticFeatSys.AddFootFeature();
            syntacticFeatSys.Freeze();

            Table1 = new CharacterDefinitionTable(SpanFactory) { Name = "table1" };
            AddSegDef(Table1, phonologicalFeatSys, "a", "cons-", "voc+", "high-", "low+", "back+", "round-", "vd+");
            AddSegDef(Table1, phonologicalFeatSys, "i", "cons-", "voc+", "high+", "low-", "back-", "round-", "vd+");
            AddSegDef(Table1, phonologicalFeatSys, "u", "cons-", "voc+", "high+", "low-", "back+", "round+", "vd+");
            AddSegDef(Table1, phonologicalFeatSys, "o", "cons-", "voc+", "high-", "low-", "back+", "round+", "vd+");
            AddSegDef(Table1, phonologicalFeatSys, "y", "cons-", "voc+", "high+", "low-", "back-", "round+", "vd+");
            AddSegDef(Table1, phonologicalFeatSys, "ɯ", "cons-", "voc+", "high+", "low-", "back+", "round-", "vd+");
            AddSegDef(Table1, phonologicalFeatSys, "p", "cons+", "voc-", "bilabial", "vd-", "asp-", "strident-", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "t", "cons+", "voc-", "alveolar", "vd-", "asp-", "del_rel-", "strident-", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "k", "cons+", "voc-", "velar", "vd-", "asp-", "strident-", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "ts", "cons+", "voc-", "alveolar", "vd-", "asp-", "del_rel+", "strident+", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "pʰ", "cons+", "voc-", "bilabial", "vd-", "asp+", "strident-", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "tʰ", "cons+", "voc-", "alveolar", "vd-", "asp+", "del_rel-", "strident-", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "kʰ", "cons+", "voc-", "velar", "vd-", "asp+", "strident-", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "tsʰ", "cons+", "voc-", "alveolar", "vd-", "asp+", "del_rel+", "strident+", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "b", "cons+", "voc-", "bilabial", "vd+", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "d", "cons+", "voc-", "alveolar", "vd+", "strident-", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "g", "cons+", "voc-", "velar", "vd+", "cont-", "nasal-");
            AddSegDef(Table1, phonologicalFeatSys, "m", "cons+", "voc-", "bilabial", "vd+", "cont-", "nasal+");
            AddSegDef(Table1, phonologicalFeatSys, "n", "cons+", "voc-", "alveolar", "vd+", "strident-", "cont-", "nasal+");
            AddSegDef(Table1, phonologicalFeatSys, "ŋ", "cons+", "voc-", "velar", "vd+", "cont-", "nasal+");
            AddSegDef(Table1, phonologicalFeatSys, "s", "cons+", "voc-", "alveolar", "vd-", "asp-", "del_rel-", "strident+", "cont+");
            AddSegDef(Table1, phonologicalFeatSys, "z", "cons+", "voc-", "alveolar", "vd+", "asp-", "del_rel-", "strident+", "cont+");
            AddSegDef(Table1, phonologicalFeatSys, "f", "cons+", "voc-", "labiodental", "vd-", "asp-", "strident+", "cont+");
            AddSegDef(Table1, phonologicalFeatSys, "v", "cons+", "voc-", "labiodental", "vd+", "asp-", "strident+", "cont+");

            Table2 = new CharacterDefinitionTable(SpanFactory) { Name = "table2" };
            AddSegDef(Table2, phonologicalFeatSys, "a", "cons-", "voc+", "high-", "low+", "back+", "round-", "vd+");
            AddSegDef(Table2, phonologicalFeatSys, "i", "cons-", "voc+", "high+", "low-", "back-", "round-", "vd+");
            AddSegDef(Table2, phonologicalFeatSys, "u", "cons-", "voc+", "high+", "low-", "back+", "round+", "vd+");
            AddSegDef(Table2, phonologicalFeatSys, "y", "cons-", "voc+", "high+", "low-", "back-", "round+", "vd+");
            AddSegDef(Table2, phonologicalFeatSys, "o", "cons-", "voc+", "high-", "low-", "back+", "round+", "vd+");
            AddSegDef(Table2, phonologicalFeatSys, "p", "cons+", "voc-", "bilabial", "vd-");
            AddSegDef(Table2, phonologicalFeatSys, "t", "cons+", "voc-", "alveolar", "vd-", "del_rel-", "strident-");
            AddSegDef(Table2, phonologicalFeatSys, "k", "cons+", "voc-", "velar", "vd-");
            AddSegDef(Table2, phonologicalFeatSys, "ts", "cons+", "voc-", "alveolar", "vd-", "del_rel+", "strident+");
            AddSegDef(Table2, phonologicalFeatSys, "b", "cons+", "voc-", "bilabial", "vd+");
            AddSegDef(Table2, phonologicalFeatSys, "d", "cons+", "voc-", "alveolar", "vd+", "strident-");
            AddSegDef(Table2, phonologicalFeatSys, "g", "cons+", "voc-", "velar", "vd+");
            AddSegDef(Table2, phonologicalFeatSys, "m", "cons+", "voc-", "bilabial", "vd+", "cont-", "nasal+");
            AddSegDef(Table2, phonologicalFeatSys, "n", "cons+", "voc-", "alveolar", "vd+", "cont-", "nasal+");
            AddSegDef(Table2, phonologicalFeatSys, "ŋ", "cons+", "voc-", "velar", "vd+", "cont-", "nasal+");
            AddSegDef(Table2, phonologicalFeatSys, "s", "cons+", "voc-", "alveolar", "vd-", "asp-", "del_rel-", "strident+", "cont+");
            AddSegDef(Table2, phonologicalFeatSys, "z", "cons+", "voc-", "alveolar", "vd+", "asp-", "del_rel-", "strident+", "cont+");
            AddSegDef(Table2, phonologicalFeatSys, "f", "cons+", "voc-", "labiodental", "vd-", "asp-", "strident+", "cont+");
            AddSegDef(Table2, phonologicalFeatSys, "v", "cons+", "voc-", "labiodental", "vd+", "asp-", "strident+", "cont+");
            AddBdryDef(Table2, "+");
            AddBdryDef(Table2, "#");
            AddBdryDef(Table2, "!");
            AddBdryDef(Table2, ".");
            AddBdryDef(Table2, "$");

            Table3 = new CharacterDefinitionTable(SpanFactory) { Name = "table3" };
            AddSegDef(Table3, phonologicalFeatSys, "a", "cons-", "voc+", "high-", "low+", "back+", "round-", "vd+", "ATR+", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "a̘", "cons-", "voc+", "high-", "low+", "back+", "round-", "vd+", "ATR-", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "i", "cons-", "voc+", "high+", "low-", "back-", "round-", "vd+", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "u", "cons-", "voc+", "high+", "low-", "back+", "round+", "vd+", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "y", "cons-", "voc+", "high+", "low-", "back-", "round+", "vd+", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "ɯ", "cons-", "voc+", "high+", "low-", "back+", "round-", "vd+", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "o", "cons-", "voc+", "high-", "low-", "back+", "round+", "vd+", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "p", "cons+", "voc-", "bilabial", "vd-", "cont-", "nasal-");
            AddSegDef(Table3, phonologicalFeatSys, "t", "cons+", "voc-", "alveolar", "vd-", "del_rel-", "strident-", "cont-", "nasal-");
            AddSegDef(Table3, phonologicalFeatSys, "k", "cons+", "voc-", "velar", "vd-", "cont-", "nasal-");
            AddSegDef(Table3, phonologicalFeatSys, "ts", "cons+", "voc-", "alveolar", "vd-", "del_rel+", "strident+", "cont-", "nasal-");
            AddSegDef(Table3, phonologicalFeatSys, "b", "cons+", "voc-", "bilabial", "vd+", "cont-", "nasal-");
            AddSegDef(Table3, phonologicalFeatSys, "d", "cons+", "voc-", "alveolar", "vd+", "strident-", "cont-", "nasal-");
            AddSegDef(Table3, phonologicalFeatSys, "g", "cons+", "voc-", "velar", "vd+", "cont-", "nasal-");
            AddSegDef(Table3, phonologicalFeatSys, "m", "cons+", "voc-", "bilabial", "vd+", "cont-", "nasal+");
            AddSegDef(Table3, phonologicalFeatSys, "n", "cons+", "voc-", "alveolar", "vd+", "strident-", "cont-", "nasal+");
            AddSegDef(Table3, phonologicalFeatSys, "ŋ", "cons+", "voc-", "velar", "vd+", "cont-", "nasal+");
            AddSegDef(Table3, phonologicalFeatSys, "s", "cons+", "voc-", "alveolar", "vd-", "asp-", "del_rel-", "strident+", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "z", "cons+", "voc-", "alveolar", "vd+", "asp-", "del_rel-", "strident+", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "f", "cons+", "voc-", "labiodental", "vd-", "asp-", "strident+", "cont+");
            AddSegDef(Table3, phonologicalFeatSys, "v", "cons+", "voc-", "labiodental", "vd+", "asp-", "strident+", "cont+");
            AddBdryDef(Table3, "+");
            AddBdryDef(Table3, "#");
            AddBdryDef(Table3, "!");
            AddBdryDef(Table3, ".");

            Latinate = new MprFeature { Name = "latinate" };
            Germanic = new MprFeature { Name = "germanic" };

            Morphophonemic = new Stratum(Table3) { Name = "Morphophonemic", MorphologicalRuleOrder = MorphologicalRuleOrder.Unordered };
            Allophonic = new Stratum(Table1) { Name = "Allophonic", MorphologicalRuleOrder = MorphologicalRuleOrder.Unordered };
            Surface = new Stratum(Table1) { Name = "Surface", MorphologicalRuleOrder = MorphologicalRuleOrder.Unordered };

            Entries = new Dictionary<string, LexEntry>();
            var fs = FeatureStruct.New(syntacticFeatSys)
                .Symbol("N")
                .Feature(Head).EqualTo(head => head
                    .Symbol("foo+").Symbol("baz-"))
                .Feature(Foot).EqualTo(foot => foot
                    .Symbol("fum-").Symbol("bar+")).Value;
            AddEntry("1", fs, Allophonic, "pʰit");
            fs = FeatureStruct.New(syntacticFeatSys)
                .Symbol("N")
                .Feature(Head).EqualTo(head => head
                    .Symbol("foo+").Symbol("baz-"))
                .Feature(Foot).EqualTo(foot => foot
                    .Symbol("fum-").Symbol("bar+")).Value;
            AddEntry("2", fs, Allophonic, "pit");

            AddEntry("5", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "pʰut");
            AddEntry("6", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "kʰat");
            AddEntry("7", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "kʰut");

            AddEntry("8", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "dat");
            AddEntry("9", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Allophonic, "dat");

            AddEntry("10", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "ga̘p");
            AddEntry("11", FeatureStruct.New(syntacticFeatSys).Symbol("A").Value, Morphophonemic, "gab");
            AddEntry("12", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Morphophonemic, "ga+b");

            AddEntry("13", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bubabu");
            AddEntry("14", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bubabi");
            AddEntry("15", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bɯbabu");
            AddEntry("16", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bibabi");
            AddEntry("17", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bubi");
            AddEntry("18", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bibu");
            AddEntry("19", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Morphophonemic, "b+ubu");
            AddEntry("20", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bubababi");
            AddEntry("21", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bibababu");
            AddEntry("22", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bubabababi");
            AddEntry("23", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bibabababu");
            AddEntry("24", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bubui");
            AddEntry("25", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "buibu");
            AddEntry("26", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "buibui");
            AddEntry("27", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "buiibuii");
            AddEntry("28", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "buitibuiti");
            AddEntry("29", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "iibubu");

            AddEntry("30", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Morphophonemic, "bu+ib");
            AddEntry("31", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Morphophonemic, "buib");

            AddEntry("32", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "sag");
            AddEntry("33", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "sas");
            AddEntry("34", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "saz");
            AddEntry("35", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "sat");
            AddEntry("36", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "sasibo");
            AddEntry("37", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "sasibut");
            AddEntry("38", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "sasibud");

            AddEntry("39", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "ab+ba");
            AddEntry("40", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "abba");

            AddEntry("41", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Allophonic, "pip");
            AddEntry("42", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "bubibi");
            AddEntry("43", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "bubibu");

            AddEntry("44", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "gigigi");

            AddEntry("45", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "nbinding");

            AddEntry("46", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "bupu");

            AddEntry("47", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "tag");
            AddEntry("48", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "pag");
            AddEntry("49", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "ktb");
            AddEntry("50", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Allophonic, "suupu");
            AddEntry("51", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Morphophonemic, "miu");
            AddEntry("52", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Morphophonemic, "pu");
            AddEntry("53", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Morphophonemic, "mi");
            AddEntry("54", FeatureStruct.New().Value, Morphophonemic, "pi");
            AddEntry("55", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Morphophonemic, "mim+ɯɯ");

            fs = FeatureStruct.New(syntacticFeatSys)
                .Symbol("V")
                .Feature(Head).EqualTo(head => head
                    .Feature("num").EqualTo("pl")).Value;
            AddEntry("Perc0", fs, Morphophonemic, "ssag");
            fs = FeatureStruct.New(syntacticFeatSys)
                .Symbol("V")
                .Feature(Head).EqualTo(head => head
                    .Feature("pers").EqualTo("1")
                    .Feature("num").EqualTo("pl")).Value;
            AddEntry("Perc1", fs, Morphophonemic, "ssag");
            fs = FeatureStruct.New(syntacticFeatSys)
                .Symbol("V")
                .Feature(Head).EqualTo(head => head
                    .Feature("pers").EqualTo("3")
                    .Feature("num").EqualTo("pl")).Value;
            AddEntry("Perc2", fs, Morphophonemic, "ssag");
            fs = FeatureStruct.New(syntacticFeatSys)
                .Symbol("V")
                .Feature(Head).EqualTo(head => head
                    .Feature("pers").EqualTo("2", "3")
                    .Feature("num").EqualTo("pl")).Value;
            AddEntry("Perc3", fs, Morphophonemic, "ssag");
            fs = FeatureStruct.New(syntacticFeatSys)
                .Symbol("V")
                .Feature(Head).EqualTo(head => head
                    .Feature("pers").EqualTo("1", "3")
                    .Feature("num").EqualTo("pl")).Value;
            AddEntry("Perc4", fs, Morphophonemic, "ssag");

            var seeFamily = new LexFamily { Name = "SEE" };
            seeFamily.Entries.Add(AddEntry("bl1", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "si"));
            fs = FeatureStruct.New(syntacticFeatSys)
                .Symbol("V")
                .Feature(Head).EqualTo(head => head
                    .Feature("tense").EqualTo("past")).Value;
            seeFamily.Entries.Add(AddEntry("bl2", fs, Morphophonemic, "sau"));
            fs = FeatureStruct.New(syntacticFeatSys)
                .Symbol("V")
                .Feature(Head).EqualTo(head => head
                    .Feature("tense").EqualTo("pres")).Value;
            seeFamily.Entries.Add(AddEntry("bl3", fs, Morphophonemic, "sis"));

            LexEntry entry = AddEntry("pos1", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "ba");
            entry.MprFeatures.Add(Latinate);
            entry = AddEntry("pos2", FeatureStruct.New(syntacticFeatSys).Symbol("N").Value, Morphophonemic, "ba");
            entry.MprFeatures.Add(Germanic);

            var vowel = FeatureStruct.New(phonologicalFeatSys).Symbol(HCFeatureSystem.Segment).Symbol("voc+").Value;
            entry = AddEntry("free", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "tap", "taz", "tas");
            entry.Allomorphs[0].Environments.Add(new AllomorphEnvironment(SpanFactory, ConstraintType.Require, null, Pattern<Word, ShapeNode>.New().Annotation(vowel).Value));

            entry = AddEntry("disj", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "baz", "bat", "bad", "bas");
            var unroundedVowel = FeatureStruct.New(phonologicalFeatSys).Symbol(HCFeatureSystem.Segment).Symbol("voc+").Symbol("round-").Value;
            entry.Allomorphs[0].Environments.Add(new AllomorphEnvironment(SpanFactory, ConstraintType.Require, null, Pattern<Word, ShapeNode>.New().Annotation(unroundedVowel).Value));
            entry.Allomorphs[1].Environments.Add(new AllomorphEnvironment(SpanFactory, ConstraintType.Require, null, Pattern<Word, ShapeNode>.New().Annotation(vowel).Value));
            entry.Allomorphs[2].Environments.Add(new AllomorphEnvironment(SpanFactory, ConstraintType.Require, null, Pattern<Word, ShapeNode>.New().Annotation(vowel).Value));

            entry = AddEntry("stemname", FeatureStruct.New(syntacticFeatSys).Symbol("V").Feature(Head).EqualTo(head => head.Feature("tense").EqualTo("pres")).Value, Morphophonemic, "san", "sad", "sap");
            entry.Allomorphs[1].StemName = new StemName(
                FeatureStruct.New(syntacticFeatSys)
                    .Symbol("V")
                    .Feature(Head).EqualTo(head => head
                        .Feature("pers").EqualTo("1")).Value,
                FeatureStruct.New(syntacticFeatSys)
                    .Symbol("V")
                    .Feature(Head).EqualTo(head => head
                        .Feature("pers").EqualTo("2")).Value) {Name = "sn1"};
            entry.Allomorphs[2].StemName = new StemName(
                FeatureStruct.New(syntacticFeatSys)
                    .Symbol("V")
                    .Feature(Head).EqualTo(head => head
                        .Feature("pers").EqualTo("1")).Value,
                FeatureStruct.New(syntacticFeatSys)
                    .Symbol("V")
                    .Feature(Head).EqualTo(head => head
                        .Feature("pers").EqualTo("3")).Value) {Name = "sn2"};

            AddEntry("synfs", FeatureStruct.New(syntacticFeatSys).Symbol("V").Feature(Head).EqualTo(head => head.Feature("tense").EqualTo("pres")).Value, Morphophonemic, "bag");

            entry = AddEntry("bound", FeatureStruct.New(syntacticFeatSys).Symbol("V").Value, Morphophonemic, "dag");
            entry.PrimaryAllomorph.IsBound = true;

            Language = new Language
            {
                Name = "Test",
                PhonologicalFeatureSystem = phonologicalFeatSys,
                SyntacticFeatureSystem = syntacticFeatSys,
                Strata = { Morphophonemic, Allophonic, Surface }
            };
        }
Example #37
0
 public void EndUnapplyStratum(Stratum stratum, Word output)
 {
     ((Trace) output.CurrentTrace).Children.Add(new Trace(TraceType.StratumAnalysisOutput, stratum) {Output = output});
 }
Example #38
0
 /// <summary>
 /// Create a list of stratum and facilities from a single line set 
 /// </summary>
 /// <param name="csv">The field-scanned csv file instance with an array of tokenized lines</param>
 void GenerateStrata(CSVFile csv)
 {
     string s = string.Empty;
     Array ae = System.Enum.GetValues(typeof(SACol));
     foreach (string[] sa in csv.Lines)
     {
         if (sa.Length != ae.Length)
             continue;
         INCCDB.Descriptor desc = null;
         Stratum strat = new Stratum();
         string facname = string.Empty;
         double d = 0;
         foreach (SACol op in ae)
         {
             try
             {
                 s = sa[(int)op];
                 switch (op)
                 {
                     case SACol.Facility:
                        Facilities_.Add(new INCCDB.Descriptor(s,s));
                         break;
                     case SACol.StratumId:
                         facname = string.Copy(s);
                         break;
                     case SACol.StratumDesc:
                         desc = new INCCDB.Descriptor(facname, s);
                         break;
                     case SACol.Bias:
                         double.TryParse(s, out d);
                         strat.bias_uncertainty = d;
                         break;
                     case SACol.Random:
                         double.TryParse(s, out d);
                         strat.random_uncertainty = d;
                         break;
                     case SACol.Systematic:
                         double.TryParse(s, out d);
                         strat.systematic_uncertainty = d;
                         break;
                 }
             }
             catch (Exception)
             {
             }
         }
         Strata.Add(new INCCDB.StratumDescriptor(desc, strat));
     }
 }
Example #39
0
 public static string GetName(Stratum StratumEnum)
 {
     switch (StratumEnum)
     {
         case Stratum.Unspecified:
             return "Unspecified";
         case Stratum.Primary:
             return "Primary";
         case Stratum.Secondary:
             return "Secondary";
         case Stratum.Secondary3:
             return "Secondary 3";
         case Stratum.Secondary4:
             return "Secondary 4";
         case Stratum.Secondary5:
             return "Secondary 5";
         case Stratum.Secondary6:
             return "Secondary 6";
         case Stratum.Secondary7:
             return "Secondary 7";
         case Stratum.Secondary8:
             return "Secondary 8";
         case Stratum.Secondary9:
             return "Secondary 9";
         case Stratum.Secondary10:
             return "Secondary 10";
         case Stratum.Secondary11:
             return "Secondary 11";
         case Stratum.Secondary12:
             return "Secondary 12";
         case Stratum.Secondary13:
             return "Secondary 13";
         case Stratum.Secondary14:
             return "Secondary 14";
         case Stratum.Secondary15:
             return "Secondary 15";
         default:
             return "Unknown";
     }
 }