Пример #1
0
        /// <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());
        }
Пример #3
0
 /// <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());
         }
     }
 }
Пример #6
0
 /// <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());
         }
     }
 }