/// <inheritdoc/> public ClassifierAction NextCharacter(char nextCharacter) { if (isFirstCharacter) { isFirstCharacter = false; return(nextCharacter == '\'' ? ClassifierAction.ContinueReading() : ClassifierAction.GiveUp()); } else { if (nextCharacter == '\\') { isEscaped = true; return(ClassifierAction.ContinueReading()); } else if (nextCharacter == '\'') { if (isEscaped) { isEscaped = false; return(ClassifierAction.ContinueReading()); } else { return(ClassifierAction.TokenizeImmediately()); } } else { return(ClassifierAction.ContinueReading()); } } }
/// <inheritdoc/> public ClassifierAction NextCharacter(char nextCharacter) { bool isMatched = nextCharacter == MatchedCharacter; return(isMatched ? ClassifierAction.TokenizeImmediately() : ClassifierAction.GiveUp()); }
/// <inheritdoc/> public ClassifierAction NextCharacter(char nextCharacter) { return(nextCharacter switch { '\r' => ClassifierAction.ContinueReading(), '\n' => ClassifierAction.TokenizeImmediately(), _ => ClassifierAction.GiveUp() });
/// <inheritdoc/> public ClassifierAction NextCharacter(char nextCharacter) { switch (state) { case State.ExpectingStartingSlash: { if (nextCharacter == '/') { state = State.ExpectingStartingAsterisk; return(ClassifierAction.ContinueReading()); } else { return(ClassifierAction.GiveUp()); } } case State.ExpectingStartingAsterisk: { if (nextCharacter == '*') { state = State.ExpectingEndingAsterisk; return(ClassifierAction.ContinueReading()); } else { return(ClassifierAction.GiveUp()); } } case State.ExpectingEndingAsterisk: { if (nextCharacter == '*') { state = State.ExpectingEndingSlash; } return(ClassifierAction.ContinueReading()); } default: { if (nextCharacter == '/') { return(ClassifierAction.TokenizeImmediately()); } else { state = State.ExpectingStartingAsterisk; return(ClassifierAction.ContinueReading()); } } } }
/// <inheritdoc/> public ClassifierAction NextCharacter(char nextCharacter) { if (modeIndex == 0) { modeIndex = 1; if (nextCharacter == '/') { return(ClassifierAction.ContinueReading()); } else { return(ClassifierAction.GiveUp()); } } else if (modeIndex == 1) { modeIndex = 2; if (nextCharacter == '*') { return(ClassifierAction.ContinueReading()); } else { return(ClassifierAction.GiveUp()); } } else if (modeIndex == 2) { if (nextCharacter == '*') { modeIndex = 3; return(ClassifierAction.ContinueReading()); } else { return(ClassifierAction.ContinueReading()); } } else { if (nextCharacter == '/') { return(ClassifierAction.TokenizeImmediately()); } else { modeIndex = 2; return(ClassifierAction.ContinueReading()); } } }
/// <inheritdoc/> public ClassifierAction NextCharacter(char nextCharacter) { if (characterIndex == 0) { characterIndex++; if (nextCharacter == '/') { return(ClassifierAction.ContinueReading()); } else { return(ClassifierAction.GiveUp()); } } if (characterIndex == 1) { characterIndex++; if (nextCharacter == '/') { return(ClassifierAction.ContinueReading()); } else { return(ClassifierAction.GiveUp()); } } else { characterIndex++; if (nextCharacter == '\n') { return(ClassifierAction.TokenizeImmediately()); } else { return(ClassifierAction.ContinueReading()); } } }