示例#1
0
            public override RangeSet <T> GetCharSet <T>(IRangeSetProvider <T> provider)
            {
                var result = RangeSet <T> .Empty;

                foreach (var handle in this.handles)
                {
                    var set = handle.GetCharSet(provider);
                    result |= handle.Negate ? provider.Negate(set) : set;
                }
                return(result);
            }
示例#2
0
 public static RangeSet <TChar> Compute <TChar>(this CharsetNode that, IRangeSetProvider <TChar> provider)
     where TChar : IComparable <TChar>
 {
     return(that.Visit(new CharsetComputer <TChar>(), provider));
 }
示例#3
0
 RangeSet <TChar> ICharsetVisitor <IRangeSetProvider <TChar>, RangeSet <TChar> > .Difference(CharsetDifference node, IRangeSetProvider <TChar> context)
 {
     return(node.LeftNode.Visit(this, context) ^ node.RightNode.Visit(this, context));
 }
示例#4
0
 RangeSet <TChar> ICharsetVisitor <IRangeSetProvider <TChar>, RangeSet <TChar> > .Union(CharsetUnion node, IRangeSetProvider <TChar> context)
 {
     return(node.LeftNode.Visit(this, context) | node.RightNode.Visit(this, context));
 }
示例#5
0
 RangeSet <TChar> ICharsetVisitor <IRangeSetProvider <TChar>, RangeSet <TChar> > .Subtract(CharsetSubtract node, IRangeSetProvider <TChar> context)
 {
     return(node.LeftNode.Visit(this, context) - node.RightNode.Visit(this, context));
 }
示例#6
0
 RangeSet <TChar> ICharsetVisitor <IRangeSetProvider <TChar>, RangeSet <TChar> > .Negate(CharsetNegate node, IRangeSetProvider <TChar> context)
 {
     return(~node.Node.Visit(this, context));
 }
示例#7
0
        RangeSet <TChar> ICharsetVisitor <IRangeSetProvider <TChar>, RangeSet <TChar> > .Handle(CharsetHandle node, IRangeSetProvider <TChar> context)
        {
            var ranges = node.Handle.GetCharSet(context);

            return(node.Handle.Negate ? ~ranges : ranges);
        }
示例#8
0
 public override RangeSet <T> GetCharSet <T>(IRangeSetProvider <T> provider)
 {
     return(provider.GetRangeSet(this.Charset));
 }
示例#9
0
 public override RangeSet <T> GetCharSet <T>(IRangeSetProvider <T> provider)
 {
     return(provider.GetRangeSet(RangeSetCategory.Name, this.Name));
 }
示例#10
0
 public override RangeSet <T> GetCharSet <T>(IRangeSetProvider <T> provider)
 {
     return(provider.GetRangeSet(RangeSetCategory.Class, this.CharSetClass.ToString()));
 }
示例#11
0
 public abstract RangeSet <T> GetCharSet <T>(IRangeSetProvider <T> provider)
     where T : IComparable <T>;
 public Context(IUnicodeMapper <TLetter> mapper, IRangeSetProvider <Codepoint> charSetProvider, bool caseSensitive)
 {
     this.Mapper          = mapper;
     this.CharSetProvider = charSetProvider;
     this.CaseSensitive   = caseSensitive;
 }
 public RxNode <TLetter> ToInvariant <TLetter>(IUnicodeMapper <TLetter> mapper, IRangeSetProvider <Codepoint> provider, bool caseSensitive)
     where TLetter : IEquatable <TLetter>, IComparable <TLetter>
 {
     return(this.Visit(ToInvariantVisitor <TLetter> .Default, new ToInvariantVisitor <TLetter> .Context(mapper, provider, caseSensitive)));
 }