public NarrowSynthesisRewriteSubruleSpec(SpanFactory<ShapeNode> spanFactory, MatcherSettings<ShapeNode> matcherSettings, bool isIterative, int targetCount, RewriteSubrule subrule, int index) : base(spanFactory, matcherSettings, isIterative, subrule, index) { _rhs = subrule.Rhs; _targetCount = targetCount; }
public NarrowSynthesisRewriteSubruleSpec(SpanFactory <ShapeNode> spanFactory, MatcherSettings <ShapeNode> matcherSettings, bool isIterative, int targetCount, RewriteSubrule subrule, int index) : base(spanFactory, matcherSettings, isIterative, subrule, index) { _rhs = subrule.Rhs; _targetCount = targetCount; }
public FeatureAnalysisRewriteRuleSpec(SpanFactory<ShapeNode> spanFactory, MatcherSettings<ShapeNode> matcherSettings, Pattern<Word, ShapeNode> lhs, RewriteSubrule subrule) : base(false) { var rhsAntiFSs = new List<FeatureStruct>(); foreach (Constraint<Word, ShapeNode> constraint in subrule.Rhs.Children.OfType<Constraint<Word, ShapeNode>>().Where(c => c.Type() == HCFeatureSystem.Segment)) rhsAntiFSs.Add(constraint.FeatureStruct.AntiFeatureStruct()); Pattern.Acceptable = match => IsUnapplicationNonvacuous(match, rhsAntiFSs); _analysisRhs = new Pattern<Word, ShapeNode>(); int i = 0; foreach (Tuple<PatternNode<Word, ShapeNode>, PatternNode<Word, ShapeNode>> tuple in lhs.Children.Zip(subrule.Rhs.Children)) { var lhsConstraint = (Constraint<Word, ShapeNode>) tuple.Item1; var rhsConstraint = (Constraint<Word, ShapeNode>) tuple.Item2; if (lhsConstraint.Type() == HCFeatureSystem.Segment && rhsConstraint.Type() == HCFeatureSystem.Segment) { var targetConstraint = lhsConstraint.DeepClone(); targetConstraint.FeatureStruct.PriorityUnion(rhsConstraint.FeatureStruct); targetConstraint.FeatureStruct.AddValue(HCFeatureSystem.Modified, HCFeatureSystem.Clean); Pattern.Children.Add(new Group<Word, ShapeNode>("target" + i) {Children = {targetConstraint}}); FeatureStruct fs = rhsConstraint.FeatureStruct.AntiFeatureStruct(); fs.Subtract(lhsConstraint.FeatureStruct.AntiFeatureStruct()); fs.AddValue(HCFeatureSystem.Type, HCFeatureSystem.Segment); _analysisRhs.Children.Add(new Constraint<Word, ShapeNode>(fs)); i++; } } Pattern.Freeze(); SubruleSpecs.Add(new AnalysisRewriteSubruleSpec(spanFactory, matcherSettings, subrule, Unapply)); }
protected SynthesisRewriteSubruleSpec(SpanFactory <ShapeNode> spanFactory, MatcherSettings <ShapeNode> matcherSettings, bool isIterative, RewriteSubrule subrule, int index) : base(spanFactory, matcherSettings, subrule.LeftEnvironment, subrule.RightEnvironment) { _isIterative = isIterative; _subrule = subrule; _index = index; }
protected SynthesisRewriteSubruleSpec(SpanFactory<ShapeNode> spanFactory, MatcherSettings<ShapeNode> matcherSettings, bool isIterative, RewriteSubrule subrule, int index) : base(spanFactory, matcherSettings, subrule.LeftEnvironment, subrule.RightEnvironment) { _isIterative = isIterative; _subrule = subrule; _index = index; }
public NarrowAnalysisRewriteRuleSpec(SpanFactory<ShapeNode> spanFactory, MatcherSettings<ShapeNode> matcherSettings, Pattern<Word, ShapeNode> lhs, RewriteSubrule subrule) : base(subrule.Rhs.IsEmpty) { _analysisRhs = lhs; _targetCount = subrule.Rhs.Children.Count; if (subrule.Rhs.IsEmpty) Pattern.Children.Add(new Constraint<Word, ShapeNode>(FeatureStruct.New().Symbol(HCFeatureSystem.Segment, HCFeatureSystem.Anchor).Value)); else Pattern.Children.AddRange(subrule.Rhs.Children.DeepClone()); Pattern.Freeze(); SubruleSpecs.Add(new AnalysisRewriteSubruleSpec(spanFactory, matcherSettings, subrule, Unapply)); }
public EpenthesisAnalysisRewriteRuleSpec(SpanFactory<ShapeNode> spanFactory, MatcherSettings<ShapeNode> matcherSettings, RewriteSubrule subrule) : base(false) { Pattern.Acceptable = IsUnapplicationNonvacuous; _targetCount = subrule.Rhs.Children.Count; foreach (Constraint<Word, ShapeNode> constraint in subrule.Rhs.Children.Cast<Constraint<Word, ShapeNode>>()) { var newConstraint = constraint.DeepClone(); newConstraint.FeatureStruct.AddValue(HCFeatureSystem.Modified, HCFeatureSystem.Clean); Pattern.Children.Add(newConstraint); } Pattern.Freeze(); SubruleSpecs.Add(new AnalysisRewriteSubruleSpec(spanFactory, matcherSettings, subrule, Unapply)); }
public NarrowAnalysisRewriteRuleSpec(SpanFactory <ShapeNode> spanFactory, MatcherSettings <ShapeNode> matcherSettings, Pattern <Word, ShapeNode> lhs, RewriteSubrule subrule) : base(subrule.Rhs.IsEmpty) { _analysisRhs = lhs; _targetCount = subrule.Rhs.Children.Count; if (subrule.Rhs.IsEmpty) { Pattern.Children.Add(new Constraint <Word, ShapeNode>(FeatureStruct.New().Symbol(HCFeatureSystem.Segment, HCFeatureSystem.Anchor).Value)); } else { Pattern.Children.AddRange(subrule.Rhs.Children.DeepClone()); } Pattern.Freeze(); SubruleSpecs.Add(new AnalysisRewriteSubruleSpec(spanFactory, matcherSettings, subrule, Unapply)); }
public FeatureAnalysisRewriteRuleSpec(SpanFactory <ShapeNode> spanFactory, MatcherSettings <ShapeNode> matcherSettings, Pattern <Word, ShapeNode> lhs, RewriteSubrule subrule) : base(false) { var rhsAntiFSs = new List <FeatureStruct>(); foreach (Constraint <Word, ShapeNode> constraint in subrule.Rhs.Children.OfType <Constraint <Word, ShapeNode> >().Where(c => c.Type() == HCFeatureSystem.Segment)) { rhsAntiFSs.Add(constraint.FeatureStruct.AntiFeatureStruct()); } Pattern.Acceptable = match => IsUnapplicationNonvacuous(match, rhsAntiFSs); _analysisRhs = new Pattern <Word, ShapeNode>(); int i = 0; foreach (Tuple <PatternNode <Word, ShapeNode>, PatternNode <Word, ShapeNode> > tuple in lhs.Children.Zip(subrule.Rhs.Children)) { var lhsConstraint = (Constraint <Word, ShapeNode>)tuple.Item1; var rhsConstraint = (Constraint <Word, ShapeNode>)tuple.Item2; if (lhsConstraint.Type() == HCFeatureSystem.Segment && rhsConstraint.Type() == HCFeatureSystem.Segment) { var targetConstraint = lhsConstraint.DeepClone(); targetConstraint.FeatureStruct.PriorityUnion(rhsConstraint.FeatureStruct); targetConstraint.FeatureStruct.AddValue(HCFeatureSystem.Modified, HCFeatureSystem.Clean); Pattern.Children.Add(new Group <Word, ShapeNode>("target" + i) { Children = { targetConstraint } }); FeatureStruct fs = rhsConstraint.FeatureStruct.AntiFeatureStruct(); fs.Subtract(lhsConstraint.FeatureStruct.AntiFeatureStruct()); fs.AddValue(HCFeatureSystem.Type, HCFeatureSystem.Segment); _analysisRhs.Children.Add(new Constraint <Word, ShapeNode>(fs)); i++; } } Pattern.Freeze(); SubruleSpecs.Add(new AnalysisRewriteSubruleSpec(spanFactory, matcherSettings, subrule, Unapply)); }
public FeatureSynthesisRewriteSubruleSpec(SpanFactory<ShapeNode> spanFactory, MatcherSettings<ShapeNode> matcherSettings, bool isIterative, RewriteSubrule subrule, int index) : base(spanFactory, matcherSettings, isIterative, subrule, index) { _rhs = subrule.Rhs; }
public EpenthesisSynthesisRewriteSubruleSpec(SpanFactory <ShapeNode> spanFactory, MatcherSettings <ShapeNode> matcherSettings, bool isIterative, RewriteSubrule subrule, int index) : base(spanFactory, matcherSettings, isIterative, subrule, index) { _rhs = subrule.Rhs; }
public AnalysisRewriteSubruleSpec(SpanFactory <ShapeNode> spanFactory, MatcherSettings <ShapeNode> matcherSettings, RewriteSubrule subrule, Action <Match <Word, ShapeNode>, Span <ShapeNode>, VariableBindings> applyAction) : base(spanFactory, matcherSettings, CreateEnvironmentPattern(subrule.LeftEnvironment), CreateEnvironmentPattern(subrule.RightEnvironment)) { _applyAction = applyAction; }
public EpenthesisAnalysisRewriteRuleSpec(SpanFactory <ShapeNode> spanFactory, MatcherSettings <ShapeNode> matcherSettings, RewriteSubrule subrule) : base(false) { Pattern.Acceptable = IsUnapplicationNonvacuous; _targetCount = subrule.Rhs.Children.Count; foreach (Constraint <Word, ShapeNode> constraint in subrule.Rhs.Children.Cast <Constraint <Word, ShapeNode> >()) { var newConstraint = constraint.DeepClone(); newConstraint.FeatureStruct.AddValue(HCFeatureSystem.Modified, HCFeatureSystem.Clean); Pattern.Children.Add(newConstraint); } Pattern.Freeze(); SubruleSpecs.Add(new AnalysisRewriteSubruleSpec(spanFactory, matcherSettings, subrule, Unapply)); }
private RewriteSubrule LoadRewriteSubrule(XElement psubruleElem, Dictionary<string, Tuple<string, SymbolicFeature>> variables) { var subrule = new RewriteSubrule(); var requiredPos = (string) psubruleElem.Attribute("requiredPartsOfSpeech"); if (!string.IsNullOrEmpty(requiredPos)) subrule.RequiredSyntacticFeatureStruct = FeatureStruct.New().Feature(_posFeature).EqualTo(ParsePartsOfSpeech(requiredPos)).Value; subrule.RequiredMprFeatures.UnionWith(LoadMprFeatures((string) psubruleElem.Attribute("requiredMPRFeatures"))); subrule.ExcludedMprFeatures.UnionWith(LoadMprFeatures((string) psubruleElem.Attribute("excludedMPRFeatures"))); subrule.Rhs = LoadPhoneticSequence(psubruleElem.Elements("PhoneticOutput").Elements("PhoneticSequence").SingleOrDefault(), variables); XElement envElem = psubruleElem.Element("Environment"); if (envElem != null) { subrule.LeftEnvironment = LoadPhoneticTemplate(envElem.Elements("LeftEnvironment").Elements("PhoneticTemplate").SingleOrDefault(), variables); subrule.RightEnvironment = LoadPhoneticTemplate(envElem.Elements("RightEnvironment").Elements("PhoneticTemplate").SingleOrDefault(), variables); } return subrule; }
public AnalysisRewriteSubruleSpec(SpanFactory<ShapeNode> spanFactory, MatcherSettings<ShapeNode> matcherSettings, RewriteSubrule subrule, Action<Match<Word, ShapeNode>, Span<ShapeNode>, VariableBindings> applyAction) : base(spanFactory, matcherSettings, CreateEnvironmentPattern(subrule.LeftEnvironment), CreateEnvironmentPattern(subrule.RightEnvironment)) { _applyAction = applyAction; }