whitespace_token.cs

来自「csharp-solution,C#高效编程源码」· CS 代码 · 共 53 行

CS
53
字号

namespace CSharp
{
    using Ctype = System.Globalization.CharacterInfo;
    
    internal sealed class WhiteSpace
    {
        internal static 
        bool Match(Position begin, Position end)
        {
            return begin != end && Ctype.IsWhiteSpace(begin.Get());
        }
    
        internal static 
        Position Eat(Position begin, Position end)
        {
            return Utility.FindIf(begin, end, notWhiteSpace);
        }

        internal static 
        IWhiteSpaceToken MakeToken(Position begin, Position end) 
        { 
            return new WhiteSpaceToken(begin, end); 
        }
        
        private sealed class WhiteSpaceToken : Token, IWhiteSpaceToken
        {
            internal WhiteSpaceToken(Position begin, Position end)
              : base(begin, end)
            {
            }
     
            internal override void Accept(ITokenVisitor visitor)
            {
                visitor.Visit(this);
            }
        }

        private static readonly NotWhiteSpace notWhiteSpace
            = new NotWhiteSpace();
                
        private sealed class NotWhiteSpace : Utility.IPredicate1
        {
            public bool Execute(char current)
            {
                return !Ctype.IsWhiteSpace(current);
            }
        }
        
        private WhiteSpace() {}
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?