Esempio n. 1
0
        public WordToken([NotNull] string text, WordTokenKind kind)
        {
            Guard.NotNull(text, nameof(text));

            Text = text;
            Kind = kind;
        }
        private static bool IsTokenKind([CanBeNull] char?ch, WordTokenKind kind)
        {
            switch (kind)
            {
            case WordTokenKind.CamelCaseWord:
            case WordTokenKind.PascalCaseWord:
            {
                return(IsLowerCaseLetter(ch));
            }

            case WordTokenKind.UpperCaseWord:
            {
                return(IsUpperCaseLetter(ch));
            }

            case WordTokenKind.Separators:
            {
                return(IsSeparator(ch));
            }

            default:
            {
                throw new NotSupportedException($"Unexpected token kind {kind}.");
            }
            }
        }
 private void ConsumeWhile(WordTokenKind kind)
 {
     while (IsTokenKind(PeekChar(), kind))
     {
         position++;
     }
     position++;
 }
        private WordToken CreateTokenFromScan(int startIndex, WordTokenKind kind)
        {
            ConsumeWhile(kind);

            if (kind == WordTokenKind.UpperCaseWord && IsLowerCaseLetter(PeekChar()))
            {
                PutBackLastUpperCaseLetterThatBelongsToNextWord();
            }

            return(CreateTokenFrom(startIndex, kind));
        }
Esempio n. 5
0
        private WordToken CreateTokenFromScan(int startIndex, WordTokenKind kind)
        {
            ConsumeWhile(kind);

            if (kind == WordTokenKind.UpperCaseWord)
            {
                bool nextCharIsLowerCaseLetter = position < text.Length && IsLowerCaseLetter(text[position]);
                if (nextCharIsLowerCaseLetter)
                {
                    PutBackLastUpperCaseLetterThatBelongsToNextWord();
                }
            }

            return(CreateTokenFrom(startIndex, kind));
        }
        private WordToken CreateTokenFrom(int startIndex, WordTokenKind kind)
        {
            string value = ExtractText(startIndex);

            return(new WordToken(value, kind));
        }