public string DecodePattern(Pattern pattern) { var sb = new StringBuilder(); foreach (var matcher in pattern) { switch (matcher) { case Lingon lingon: if (Lingon.DefaultSet.Contains(lingon)) { sb.Append(lingon.Symbol); } else { sb.Append(Lingons.First(pair => pair.Value.Equals(lingon)).Key); } break; case Category cat: sb.Append(Categories.First(pair => pair.Value.Equals(cat)).Key); break; case NonceSet nonceSet: sb.Append($"[{DecodePattern(nonceSet.Set.ToPattern())}]"); break; } } return(sb.ToString()); }
public string DecodeWord(Sequence sequence) { var sb = new StringBuilder(); foreach (var lingon in sequence) { if (Lingon.DefaultSet.Contains(lingon)) { sb.Append(lingon.Symbol); } else { sb.Append(Lingons.First(pair => pair.Value.Equals(lingon)).Key); } } return(sb.ToString()); }