private TokenChanges LocalMinForSubSequence(ParsedSequence seq, Dictionary <ParsedSequenceKey, SequenceTokenChanges> memiozation, ParsedSubrule subrule, TokenChanges localMin) { var subSeqs = seq.GetSequencesForSubrule(subrule).ToArray(); var hasSequence = false; foreach (var subSeq in subSeqs) { hasSequence = true; var localRes = FindBestPath(subSeq, subrule.End, memiozation); localMin = TokenChanges.Min(localMin, localRes); } if (!hasSequence) { if (subrule.IsEmpty) { localMin = new TokenChanges(seq.SubruleMandatoryTokenCount(subrule), 0); } else { localMin = new TokenChanges(); } } return(localMin); }
private int LocalMinForSubSequence(ParsedSequence seq, Dictionary<ParsedSequenceKey, SubruleParsesAndEnd> memiozation, ParsedSubrule subrule, int localMin) { var subSeqs = seq.GetSequencesForSubrule(subrule).ToArray(); var hasSequence = false; foreach (var subSeq in subSeqs) { hasSequence = true; var localRes = FindBestPath(subSeq, subrule.End, memiozation); if (localRes < localMin) localMin = localRes; } if (!hasSequence) { if (subrule.IsEmpty) localMin = seq.SubruleMandatoryTokenCount(subrule); else localMin = 0; } return localMin; }
private TokenChanges LocalMinForSubSequence(ParsedSequence seq, Dictionary<ParsedSequenceKey, SequenceTokenChanges> memiozation, ParsedSubrule subrule, TokenChanges localMin) { var subSeqs = seq.GetSequencesForSubrule(subrule).ToArray(); var hasSequence = false; foreach (var subSeq in subSeqs) { hasSequence = true; var localRes = FindBestPath(subSeq, subrule.End, memiozation); localMin = TokenChanges.Min(localMin, localRes); } if (!hasSequence) { if (subrule.IsEmpty) localMin = new TokenChanges(seq.SubruleMandatoryTokenCount(subrule), 0); else localMin = new TokenChanges(); } return localMin; }