示例#1
0
        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; 
    }
示例#3
0
        }//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);
        }