コード例 #1
0
ファイル: RegexVisualizer.cs プロジェクト: YangFan789/Fade
 private static void Draw(RegexState regexState, StringBuilder sb, HashSet<string> set)
 {
     if (set.Contains(regexState.ToString())) {
         return;
     }
     set.Add(regexState.ToString());
     if (!regexState.IsFinalStates) {
         sb.Append($"    {regexState} [shape=\"circle\"];\n");
     }
     foreach (var transition in regexState.Transitions) {
         sb.Append($"    {regexState} -> {transition.Value}[label=\"{transition.Key}\"];\n");
         Draw(transition.Value, sb, set);
     }
     foreach (var state in regexState.Epsilon) {
         sb.Append($"    {regexState} -> {state}[label=\"ε\"];\n");
         Draw(state, sb, set);
     }
 }