public void Update(ClientInfo clientInfo) { SyncStatus = Shared.Enum.SyncStatus.Staged; SyncStatusDate = DateTime.Now; IsFamilyMember = clientInfo.IsFamilyMember; IsPartner = clientInfo.IsPartner; MaritalStatus = clientInfo.MaritalStatus; KeyPop = clientInfo.KeyPop; OtherKeyPop = clientInfo.OtherKeyPop; PreventEnroll = clientInfo.PreventEnroll; AlreadyTestedPos = clientInfo.AlreadyTestedPos; UserId = clientInfo.UserId; Identifiers.Clear(); var identifiers = ClientIdentifier.Create(clientInfo); AddIdentifiers(identifiers); Relationships.Clear(); var relationships = ClientRelationship.Create(clientInfo); AddRelationships(relationships); ClientStates.Clear(); var stats = ClientState.Create(clientInfo); AddClientStates(stats); }
private void Reset() { Log(LogEventLevel.Information, "State machine was reset"); Line = 1; Position = 1; _machine.Reset(); CurrentToken = new StringToken { Line = Line }; Identifiers.Clear(); Constants.Clear(); Labels.Clear(); Parsed.Clear(); }
// Сканирование public void Scan(string source) { source = source.Replace('\n', ' ').Replace('\t', ' '); Logs.Clear(); Lexemes.Clear(); Identifiers.Clear(); Literals.Clear(); var lexeme = new StringBuilder(); char character = ' '; int index = 0; bool GetCharacterResult = false; Logs.Add(new ScannerLog(ScannerLogType.Start, null, LexemeType.NA, index, character)); while (true) { lexeme.Clear(); // Новая лексема GetCharacterResult = GetCharacter(source, index, out character); // Считываем текущий символ if (!GetCharacterResult) // Если конец программы - break; { Logs.Add(new ScannerLog(ScannerLogType.EndOfFile, lexeme, LexemeType.NA, index, character)); break; } if (IsLetter(character)) // Первый символ - буква { // <идентификатор> ::= буква | <идентификатор> буква | <идентификатор> цифра Logs.Add(new ScannerLog(ScannerLogType.New, lexeme, LexemeType.IDN, index, character)); do { lexeme.Append(character); // Конкатенация Logs.Add(new ScannerLog(ScannerLogType.Concat, lexeme, LexemeType.IDN, index, character)); GetCharacterResult = GetCharacter(source, ++index, out character); // Считываем следующий символ }while (GetCharacterResult && IsLetterOrDigit(character)); if (IsKeyword(lexeme.ToString())) { // Ключевое слово Logs.Add(new ScannerLog(ScannerLogType.Push, lexeme, LexemeType.KEY, index, character)); AddLexeme(LexemeType.KEY, lexeme); } else { // Идентификатор Logs.Add(new ScannerLog(ScannerLogType.Push, lexeme, LexemeType.IDN, index, character)); AddLexeme(LexemeType.IDN, lexeme); } } else if (IsDigit(character)) // Первый символ - цифра { // <целое> ::= цифра | <целое> цифра Logs.Add(new ScannerLog(ScannerLogType.New, lexeme, LexemeType.INT, index, character)); do { lexeme.Append(character); Logs.Add(new ScannerLog(ScannerLogType.Concat, lexeme, LexemeType.INT, index, character)); GetCharacterResult = GetCharacter(source, ++index, out character); }while (GetCharacterResult && IsDigit(character)); Logs.Add(new ScannerLog(ScannerLogType.Push, lexeme, LexemeType.INT, index, character)); AddLexeme(LexemeType.INT, lexeme); } else if (IsStringDelimiter(character)) // String разделитель { int stringStartIndex = index; lexeme.Append(character); Logs.Add(new ScannerLog(ScannerLogType.Concat, lexeme, LexemeType.DLS, index, character)); AddLexeme(LexemeType.DLS, lexeme); lexeme.Clear(); // Литерал GetCharacterResult = GetCharacter(source, ++index, out character); while (GetCharacterResult && !IsStringDelimiter(character)) { // Если мы нашли символ, и это не StringDelimiter lexeme.Append(character); Logs.Add(new ScannerLog(ScannerLogType.Concat, lexeme, LexemeType.STR, index, character)); GetCharacterResult = GetCharacter(source, ++index, out character); } Logs.Add(new ScannerLog(ScannerLogType.Push, lexeme, LexemeType.STR, index, character)); AddLexeme(LexemeType.STR, lexeme); if (GetCharacterResult) { // Если нашли завершающий StringDelimiter lexeme.Clear(); lexeme.Append(character); Logs.Add(new ScannerLog(ScannerLogType.Push, lexeme, LexemeType.DLS, index, character)); AddLexeme(LexemeType.DLS, lexeme); index += 1; // Переход на следующий символ } else { Logs.Add(new ScannerLog(ScannerLogType.EndlessString, lexeme, LexemeType.DLS, index, character)); throw new ScannerException(stringStartIndex, ' ', "String termination character cannot be found"); } } else if (IsDelimiter1(character.ToString())) { lexeme.Append(character); Logs.Add(new ScannerLog(ScannerLogType.New, lexeme, LexemeType.DL1, index, character)); GetCharacterResult = GetCharacter(source, ++index, out character); if (GetCharacterResult && IsDelimiter2(lexeme.ToString() + character)) { // Двухпозиционный разделитель lexeme.Append(character); Logs.Add(new ScannerLog(ScannerLogType.Push, lexeme, LexemeType.DL2, index, character)); AddLexeme(LexemeType.DL2, lexeme); index += 1; // Переход на следующий символ } else { // Однопозиционный разделитель Logs.Add(new ScannerLog(ScannerLogType.Push, lexeme, LexemeType.DL1, index, character)); AddLexeme(LexemeType.DL1, lexeme); } } else if (Char.IsWhiteSpace(character)) { Logs.Add(new ScannerLog(ScannerLogType.Skip, lexeme, LexemeType.NA, index, character)); index += 1; } else { Logs.Add(new ScannerLog(ScannerLogType.Undefined, lexeme, LexemeType.NA, index, character)); throw new ScannerException(index, character, "Undefined symbol found"); } } Logs.Add(new ScannerLog(ScannerLogType.Success, lexeme, LexemeType.NA, index, character)); }
public void Clear() { Identifiers.Clear(); IsMatch = false; }
public static void Clear() { Identifiers.Clear(); }
internal void Clear() { Collector = string.Empty; Identifiers.Clear(); Name = string.Empty; }