public static string StateListToText(ParserStateList states) { StringBuilder sb = new StringBuilder(); foreach (ParserState state in states) { sb.Append("State "); sb.AppendLine(state.Name); //LRItems foreach (LRItem item in state.Items) { sb.Append(" "); sb.AppendLine(item.ToString()); } //Transitions sb.Append(" TRANSITIONS: "); foreach (string key in state.Actions.Keys) { ActionRecord action = state.Actions[key]; if (action.NewState == null) { continue; //may be null in malformed grammars } string displayKey = key.EndsWith("\b") ? key.Substring(0, key.Length - 1) : key; sb.Append(displayKey); sb.Append("->"); sb.Append(action.NewState.Name); sb.Append("; "); } sb.AppendLine(); sb.AppendLine(); }//foreach return(sb.ToString()); }
}//method private ParserStateList GetStatesWithConflicts(int startIndex) { var conflictStates = new ParserStateList(); for (int i = startIndex; i < Data.States.Count; i++) { var state = Data.States[i]; if (!state.BuilderData.IsInadequate || state.BuilderData.Conflicts.Count == 0) continue; //if(state.BuilderData.Conflicts.Count > 0) conflictStates.Add(state); }//for i return conflictStates; }
}//method private ParserStateList GetStatesWithConflicts(int startIndex) { var conflictStates = new ParserStateList(); for (int i = startIndex; i < Data.States.Count; i++) { var state = Data.States[i]; if (!state.BuilderData.IsInadequate || state.BuilderData.Conflicts.Count == 0) { continue; } //if(state.BuilderData.Conflicts.Count > 0) conflictStates.Add(state); }//for i return(conflictStates); }