本文整理汇总了C#中Pattern.Freeze方法的典型用法代码示例。如果您正苦于以下问题:C# Pattern.Freeze方法的具体用法?C# Pattern.Freeze怎么用?C# Pattern.Freeze使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Pattern
的用法示例。
在下文中一共展示了Pattern.Freeze方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SynthesisMetathesisRuleSpec
public SynthesisMetathesisRuleSpec(SpanFactory<ShapeNode> spanFactory, Pattern<Word, ShapeNode> pattern, string leftGroupName, string rightGroupName)
{
_spanFactory = spanFactory;
_leftGroupName = leftGroupName;
_rightGroupName = rightGroupName;
_pattern = new Pattern<Word, ShapeNode>();
foreach (PatternNode<Word, ShapeNode> node in pattern.Children)
{
var group = node as Group<Word, ShapeNode>;
if (group != null)
{
var newGroup = new Group<Word, ShapeNode>(group.Name);
foreach (Constraint<Word, ShapeNode> constraint in group.Children.Cast<Constraint<Word, ShapeNode>>())
{
Constraint<Word, ShapeNode> newConstraint = constraint.DeepClone();
newConstraint.FeatureStruct.AddValue(HCFeatureSystem.Modified, HCFeatureSystem.Clean);
newGroup.Children.Add(newConstraint);
}
_pattern.Children.Add(newGroup);
}
else
{
_pattern.Children.Add(node.DeepClone());
}
}
_pattern.Freeze();
}
示例2: AnalysisMetathesisRuleSpec
public AnalysisMetathesisRuleSpec(Pattern<Word, ShapeNode> pattern, string leftGroupName, string rightGroupName)
{
_leftGroupName = leftGroupName;
_rightGroupName = rightGroupName;
Group<Word, ShapeNode>[] groupOrder = pattern.Children.OfType<Group<Word, ShapeNode>>().ToArray();
Dictionary<string, Group<Word, ShapeNode>> groups = groupOrder.ToDictionary(g => g.Name);
_pattern = new Pattern<Word, ShapeNode>();
foreach (PatternNode<Word, ShapeNode> node in pattern.Children.TakeWhile(n => !(n is Group<Word, ShapeNode>)))
_pattern.Children.Add(node.DeepClone());
AddGroup(groups, leftGroupName);
AddGroup(groups, rightGroupName);
foreach (PatternNode<Word, ShapeNode> node in pattern.Children.GetNodes(Direction.RightToLeft).TakeWhile(n => !(n is Group<Word, ShapeNode>)).Reverse())
_pattern.Children.Add(node.DeepClone());
_pattern.Freeze();
}
示例3: LoadPhoneticTemplate
private Pattern<Word, ShapeNode> LoadPhoneticTemplate(XElement ptempElem, Dictionary<string, Tuple<string, SymbolicFeature>> variables,
CharacterDefinitionTable defaultTable = null, Dictionary<string, string> groupNames = null)
{
var pattern = new Pattern<Word, ShapeNode>();
if (ptempElem != null)
{
if ((string) ptempElem.Attribute("initialBoundaryCondition") == "true")
pattern.Children.Add(new Constraint<Word, ShapeNode>(HCFeatureSystem.LeftSideAnchor));
foreach (PatternNode<Word, ShapeNode> node in LoadPatternNodes(ptempElem.Element("PhoneticSequence"), variables, defaultTable, groupNames))
pattern.Children.Add(node);
if ((string) ptempElem.Attribute("finalBoundaryCondition") == "true")
pattern.Children.Add(new Constraint<Word, ShapeNode>(HCFeatureSystem.RightSideAnchor));
}
pattern.Freeze();
return pattern;
}
示例4: LoadPhoneticSequence
private Pattern<Word, ShapeNode> LoadPhoneticSequence(XElement pseqElem, Dictionary<string, Tuple<string, SymbolicFeature>> variables,
CharacterDefinitionTable defaultTable = null, string name = null)
{
if (pseqElem == null)
return Pattern<Word, ShapeNode>.New().Value;
var pattern = new Pattern<Word, ShapeNode>(name, LoadPatternNodes(pseqElem, variables, defaultTable, null));
pattern.Freeze();
return pattern;
}