private void HandleState(ParsingStates parsingState) { if (parsingState == ParsingStates.Error) { throw new InvalidSyntaxException($"Invalid syntax at line: {CurrentLine}, position: {CurrentIndexInLine}"); } }
public ParsingStates Move(CharacterTypes characterType, out AdditionalOperations[] additionalOperations) { Transition transition = new Transition(CurrentState, characterType); ParsingStates nextState = ParsingRules.StatesTable[transition]; ParsingStateChange parsingStateChange = new ParsingStateChange(CurrentState, nextState); additionalOperations = null; if (ParsingRules.AdditionalParsingOperations.ContainsKey(parsingStateChange)) { additionalOperations = ParsingRules.AdditionalParsingOperations[parsingStateChange]; } CurrentState = nextState; return(CurrentState); }
public ParsingStateChange(ParsingStates startState, ParsingStates endState) { StartState = startState; EndState = endState; }
protected virtual bool ProcessLine(string line) { bool retVal = true; line = line.Trim(); if (line.EndsWith(",")) { line = line.Substring(0, line.Length - 1); } if (line.StartsWith("#") || line.Length < 1) { } else if (line.StartsWith("KEY=", StringComparison.InvariantCultureIgnoreCase)) { Tool.SetKey(line.Substring(4)); } else if (line.StartsWith("CoachKEY=", StringComparison.InvariantCultureIgnoreCase)) { Tool.CoachKey = line.Substring(9); } else if (line.StartsWith("SET")) { ApplySet(line); } else if (line.IndexOf("LookupAndModify", StringComparison.InvariantCultureIgnoreCase) > -1) { Console.WriteLine("LookupAndModifyMode"); mCurrentState = ParsingStates.PlayerLookupAndApply; } else if ((mTeamMatch = mTeamRegex.Match(line)) != Match.Empty) { //Console.WriteLine("'{0}' ", line); mCurrentState = ParsingStates.PlayerModification; string team = mTeamMatch.Groups[1].ToString(); bool ret = SetCurrentTeam(team); if (!ret) { StaticUtils.AddError(string.Format("ERROR with line '{0}'.", line)); StaticUtils.AddError(string.Format("Team input must be in the form 'TEAM = team '")); return(false); } } else if (mWeekRegex.Match(line) != Match.Empty) //line.StartsWith("WEEK")) { mCurrentState = ParsingStates.Schedule; if (mScheduleList == null) { mScheduleList = new List <string>(300); } mScheduleList.Add(line); } else if (mYearRegex.Match(line) != Match.Empty)//line.StartsWith("YEAR")) { SetYear(line); } else if (line.StartsWith("KR1,") || line.StartsWith("KR2,") || line.StartsWith("PR,") || line.StartsWith("LS,")) { SetSpecialTeamPlayer(line); } else if (line.Equals("AutoUpdateDepthChart")) { Tool.AutoUpdateDepthChart(); } else if (line.Equals("AutoUpdatePBP")) { Tool.AutoUpdatePBP(); } else if (line.Equals("AutoUpdatePhoto")) { Tool.AutoUpdatePhoto(); } else if (line.StartsWith("Coach,", StringComparison.InvariantCultureIgnoreCase)) { SetCoachData(line); } else if (line.StartsWith("LookupPlayer")) { mCurrentState = ParsingStates.PlayerLookup; mLookupedPlayers = new StringBuilder(1000); } else if (line.StartsWith("ApplyFormula")) { ApplyFormula(line); } else { switch (mCurrentState) { case ParsingStates.PlayerModification: retVal = InsertPlayer(line); break; case ParsingStates.PlayerLookup: mLookupedPlayers.Append(LookupPlayer(line)); mLookupedPlayers.Append("\n"); break; case ParsingStates.Schedule: mScheduleList.Add(line.ToLower()); break; case ParsingStates.PlayerLookupAndApply: retVal = LookupPlayerAndApply(line); break; } } return(retVal); }
public Transition(ParsingStates currentState, CharacterTypes characterType) { CurrentState = currentState; CharacterType = characterType; }
public TransitionManager(ParsingStates parsingState) { CurrentState = parsingState; }
public TransitionManager() { CurrentState = ParsingStates.Value; }
protected virtual void ProcessLine(string line) { line = line.Trim(); if (line.EndsWith(",")) line = line.Substring(0, line.Length - 1); if (line.StartsWith("#") || line.Length < 1) { } else if (line.StartsWith("KEY=", StringComparison.InvariantCultureIgnoreCase)) { Tool.SetKey(line.Substring(4)); } else if (line.StartsWith("CoachKEY=", StringComparison.InvariantCultureIgnoreCase)) { Tool.CoachKey = line.Substring(9); } else if (line.StartsWith("SET")) { ApplySet(line); } else if ((mTeamMatch = mTeamRegex.Match(line)) != Match.Empty) { //Console.WriteLine("'{0}' ", line); mCurrentState = ParsingStates.PlayerModification; string team = mTeamMatch.Groups[1].ToString(); bool ret = SetCurrentTeam(team); if (!ret) { StaticUtils.AddError(string.Format("ERROR with line '{0}'.", line)); StaticUtils.AddError(string.Format("Team input must be in the form 'TEAM = team '")); return; } } else if (mWeekRegex.Match(line) != Match.Empty) //line.StartsWith("WEEK")) { mCurrentState = ParsingStates.Schedule; if (mScheduleList == null) mScheduleList = new List<string>(300); mScheduleList.Add(line); } else if (mYearRegex.Match(line) != Match.Empty)//line.StartsWith("YEAR")) { SetYear(line); } else if (line.StartsWith("KR1,") || line.StartsWith("KR2,") || line.StartsWith("PR,") || line.StartsWith("LS,")) { SetSpecialTeamPlayer(line); } else if (line.StartsWith("Coach,", StringComparison.InvariantCultureIgnoreCase)) { SetCoachData(line); } else { switch (mCurrentState) { case ParsingStates.PlayerModification: InsertPlayer(line); break; case ParsingStates.Schedule: mScheduleList.Add(line); break; } } }