protected override bool ConstraintsEqual(Allomorph other) { var otherAllo = other as RootAllomorph; if (otherAllo == null) { return(false); } return(base.ConstraintsEqual(other) && IsBound == otherAllo.IsBound); }
internal Annotation <ShapeNode> MarkMorph(IEnumerable <ShapeNode> nodes, Allomorph allomorph) { ShapeNode[] nodeArray = nodes.ToArray(); Annotation <ShapeNode> ann = null; if (nodeArray.Length > 0) { ann = new Annotation <ShapeNode>(Range <ShapeNode> .Create(nodeArray[0], nodeArray[nodeArray.Length - 1]), FeatureStruct.New() .Symbol(HCFeatureSystem.Morph) .Feature(HCFeatureSystem.Allomorph).EqualTo(allomorph.ID).Value); ann.Children.AddRange(nodeArray.Select(n => n.Annotation)); _shape.Annotations.Add(ann, false); } _allomorphs[allomorph.ID] = allomorph; return(ann); }
protected override Morpheme GetMorphObject(Allomorph morph) { return(morph.Morpheme); }
protected abstract T GetMorphObject(Allomorph morph);
internal Annotation <ShapeNode> MarkSubsumedMorph(Annotation <ShapeNode> morph, Allomorph allomorph) { Annotation <ShapeNode> ann = new Annotation <ShapeNode>(morph.Range, FeatureStruct.New() .Symbol(HCFeatureSystem.Morph) .Feature(HCFeatureSystem.Allomorph).EqualTo(allomorph.ID).Value); morph.Children.Add(ann, false); _allomorphs[allomorph.ID] = allomorph; return(ann); }