當前位置: 首頁>>代碼示例>>C#>>正文


C# Parsing.TokenReader類代碼示例

本文整理匯總了C#中StarryEyes.Filters.Parsing.TokenReader的典型用法代碼示例。如果您正苦於以下問題:C# TokenReader類的具體用法?C# TokenReader怎麽用?C# TokenReader使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


TokenReader類屬於StarryEyes.Filters.Parsing命名空間,在下文中一共展示了TokenReader類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: CompileL6

 private static FilterOperatorBase CompileL6(TokenReader reader)
 {
     // parse arithmetic operators (faster)
     var left = CompileL7(reader);
     if (!reader.IsRemainToken)
         return left;
     var generate = (Func<TokenType, FilterTwoValueOperator, FilterOperatorBase>)
                    ((type, oper) => GenerateSink(reader, left, type, oper, CompileL6));
     switch (reader.LookAhead().Type)
     {
         case TokenType.OperatorMultiple:
             return generate(TokenType.OperatorMultiple, new FilterOperatorProduct());
         case TokenType.OperatorDivide:
             return generate(TokenType.OperatorDivide, new FilterOperatorDivide());
         default:
             return left;
     }
 }
開發者ID:Mojopon,項目名稱:StarryEyes,代碼行數:18,代碼來源:QueryCompiler.cs

示例2: CompileL4

 private static FilterOperatorBase CompileL4(TokenReader reader)
 {
     // <- -> in contains
     var left = CompileL5(reader);
     if (!reader.IsRemainToken)
         return left;
     var generate = (Func<TokenType, FilterTwoValueOperator, FilterOperatorBase>)
                    ((type, oper) => GenerateSink(reader, left, type, oper, CompileL4));
     switch (reader.LookAhead().Type)
     {
         case TokenType.OperatorContains:
             return generate(TokenType.OperatorContains, new FilterOperatorContains());
         case TokenType.OperatorIn:
             return generate(TokenType.OperatorIn, new FilterOperatorContainedBy());
         case TokenType.Literal:
             switch (reader.LookAhead().Value.ToLower())
             {
                 case "in":
                     // <-
                     return generate(TokenType.Literal, new FilterOperatorContainedBy());
                 case "contains":
                     // ->
                     return generate(TokenType.Literal, new FilterOperatorContains());
                 case "startswith":
                 case "startwith":
                     return generate(TokenType.Literal, new OperatorStringStartsWith());
                 case "endswith":
                 case "endwith":
                     return generate(TokenType.Literal, new OperatorStringEndsWith());
                 case "match":
                 case "regex":
                     return generate(TokenType.Literal, new OperatorStringRegex());
                 default:
                     return left;
             }
         default:
             return left;
     }
 }
開發者ID:Mojopon,項目名稱:StarryEyes,代碼行數:39,代碼來源:QueryCompiler.cs

示例3: CompileL5

 private static FilterOperatorBase CompileL5(TokenReader reader)
 {
     // parse arithmetic operators
     var left = CompileL6(reader);
     if (!reader.IsRemainToken)
         return left;
     var generate = (Func<TokenType, FilterTwoValueOperator, FilterOperatorBase>)
                    ((type, oper) => GenerateSink(reader, left, type, oper, CompileL5));
     switch (reader.LookAhead().Type)
     {
         case TokenType.OperatorPlus:
             return generate(TokenType.OperatorPlus, new FilterOperatorPlus());
         case TokenType.OperatorMinus:
             return generate(TokenType.OperatorMinus, new FilterOperatorMinus());
         default:
             return left;
     }
 }
開發者ID:Mojopon,項目名稱:StarryEyes,代碼行數:18,代碼來源:QueryCompiler.cs

示例4: GetStatusValue

 private static ValueBase GetStatusValue(string value, TokenReader reader)
 {
     switch (value.ToLower())
     {
         case "dm":
         case "isdm":
         case "is_dm":
         case "message":
         case "ismessage":
         case "is_message":
         case "directmessage":
         case "direct_message":
         case "isdirectmessage":
         case "is_direct_message":
             return new StatusIsDirectMessage();
         case "rt":
         case "retweet":
         case "isretweet":
         case "is_retweet":
             return new StatusIsRetweet();
         case "replyto":
         case "reply_to":
         case "inreplyto":
         case "in_reply_to":
             return new StatusInReplyTo();
         case "mention":
         case "to":
             return new StatusTo();
         case "id":
             return new StatusId();
         case "favs":
         case "favorites":
         case "favorer":
         case "favorers":
             return new StatusFavorites();
         case "rts":
         case "retweets":
         case "retweeter":
         case "retweeters":
             return new StatusRetweets();
         case "text":
         case "body":
             return new StatusText();
         case "via":
         case "from":
         case "source":
         case "client":
             return new StatusSource();
         default:
             throw CreateUnexpectedTokenError(value, value + " " + reader.RemainQuery);
     }
 }
開發者ID:Mojopon,項目名稱:StarryEyes,代碼行數:52,代碼來源:QueryCompiler.cs

示例5: CompileL4

 private static FilterOperatorBase CompileL4(TokenReader reader)
 {
     // <- ->
     FilterOperatorBase left = CompileL5(reader);
     if (!reader.IsRemainToken)
         return left;
     var generate = (Func<TokenType, FilterTwoValueOperator, FilterOperatorBase>)
                    ((type, oper) => GenerateSink(reader, left, type, oper, CompileL4));
     switch (reader.LookAhead().Type)
     {
         case TokenType.OperatorContains:
             return generate(TokenType.OperatorContains, new FilterOperatorContains());
         case TokenType.OperatorContainedBy:
             return generate(TokenType.OperatorContainedBy, new FilterOperatorContainedBy());
         default:
             return left;
     }
 }
開發者ID:Aeri912,項目名稱:StarryEyes,代碼行數:18,代碼來源:QueryCompiler.cs

示例6: GenerateSink

 private static FilterOperatorBase GenerateSink(
     TokenReader reader,
     FilterOperatorBase leftValue,
     TokenType type,
     FilterTwoValueOperator oper,
     Func<TokenReader, FilterOperatorBase> selfCall)
 {
     reader.AssertGet(type);
     var rightValue = selfCall(reader);
     oper.LeftValue = leftValue;
     oper.RightValue = rightValue;
     return oper;
 }
開發者ID:Mojopon,項目名稱:StarryEyes,代碼行數:13,代碼來源:QueryCompiler.cs

示例7: GetAccountValue

 private static ValueBase GetAccountValue(string value, TokenReader reader)
 {
     var repl = GetUserExpr(value);
     if (reader.IsRemainToken && reader.LookAhead().Type == TokenType.Period)
     {
         reader.AssertGet(TokenType.Period);
         var literal = reader.AssertGet(TokenType.Literal);
         switch (literal.Value.ToLower())
         {
             case "friend":
             case "friends":
             case "following":
             case "followings":
                 return new LocalUserFollowing(repl);
             case "follower":
             case "followers":
                 return new LocalUserFollowers(repl);
             case "block":
             case "blocks":
             case "blocking":
             case "blockings":
                 return new LocalUserBlockings(repl);
             default:
                 throw CreateUnexpectedTokenError(
                     literal.Value, repl.ToQuery() + "." + literal.Value + " " + reader.RemainQuery);
         }
     }
     return new LocalUser(repl);
 }
開發者ID:Mojopon,項目名稱:StarryEyes,代碼行數:29,代碼來源:QueryCompiler.cs

示例8: CompileL8

 private static FilterOperatorBase CompileL8(TokenReader reader)
 {
     if (reader.LookAhead().Type == TokenType.OpenBracket)
     {
         // in bracket
         reader.AssertGet(TokenType.OpenBracket);
         if (reader.LookAhead().Type == TokenType.CloseBracket)
         {
             // empty bracket
             reader.AssertGet(TokenType.CloseBracket);
             return new FilterBracket(null);
         }
         var ret = CompileL0(reader);
         reader.AssertGet(TokenType.CloseBracket);
         return new FilterBracket(ret);
     }
     return GetValue(reader);
 }
開發者ID:hosiminn,項目名稱:StarryEyes,代碼行數:18,代碼來源:QueryCompiler.cs

示例9: CompileSources

 /// <summary>
 ///     Instantiate sources from tokens.
 /// </summary>
 private static IEnumerable<FilterSourceBase> CompileSources(IEnumerable<Token> token)
 {
     // filter
     // filter: "argument"
     // filter: "argument1", "argument2", ... -> filter: "argument1", filter: "argument2", ...
     var reader = new TokenReader(token);
     while (reader.IsRemainToken)
     {
         var filter = reader.Get();
         if (filter.Type != TokenType.Literal && filter.Type != TokenType.OperatorMultiple)
         {
             throw CreateUnexpectedTokenError(filter.Value, reader.RemainQuery);
         }
         Type fstype;
         if (!FilterSourceResolver.TryGetValue(filter.Value, out fstype))
         {
             throw new ArgumentException(
                 QueryCompilerResources.QueryUnknownFilterSource + " " +
                 filter.Value);
         }
         if (reader.IsRemainToken && reader.LookAhead().Type == TokenType.Collon) // with argument
         {
             reader.AssertGet(TokenType.Collon);
             do
             {
                 var argument = reader.AssertGet(TokenType.String);
                 yield return Activator.CreateInstance(fstype, argument.Value) as FilterSourceBase;
                 // separated by comma
                 if (reader.IsRemainToken)
                 {
                     reader.AssertGet(TokenType.Comma);
                 }
             } while (reader.IsRemainToken && reader.LookAhead().Type == TokenType.String);
         }
         else
         {
             yield return Activator.CreateInstance(fstype) as FilterSourceBase;
             if (reader.IsRemainToken)
             {
                 // filters are divided by comma
                 reader.AssertGet(TokenType.Comma);
             }
         }
     }
 }
開發者ID:karno,項目名稱:StarryEyes,代碼行數:48,代碼來源:QueryCompiler.cs

示例10: InstantiateValue

 private static ValueBase InstantiateValue(TokenReader reader)
 {
     Token literal = reader.LookAhead();
     if (literal.Type == TokenType.String)
     {
         // immediate string value
         return new StringValue(reader.AssertGet(TokenType.String).Value);
     }
     if (literal.Type == TokenType.OperatorMultiple)
     {
         // for parsing asterisk user
         Token pseudo = reader.AssertGet(TokenType.OperatorMultiple);
         literal = new Token(TokenType.Literal, "*", pseudo.DebugIndex);
     }
     else
     {
         literal = reader.AssertGet(TokenType.Literal);
     }
     // check first layers
     switch (literal.Value)
     {
         case "*":
             return InstantiateLocalUsers("*", reader);
         case "local":
             reader.AssertGet(TokenType.Period);
             return InstantiateLocalUsers(reader.AssertGet(TokenType.Literal).Value, reader);
         case "user":
         case "retweeter":
             return InstantiateUserValue(literal.Value == "retweeter", reader);
         default:
             long iv;
             if (Int64.TryParse(literal.Value, out iv))
             {
                 return new NumericValue(iv);
             }
             return InstantiateStatusValue(literal.Value, reader);
     }
 }
開發者ID:Aeri912,項目名稱:StarryEyes,代碼行數:38,代碼來源:QueryCompiler.cs

示例11: CompileFilters

 /// <summary>
 ///     Instantiate expression tree from tokens.
 /// </summary>
 private static FilterExpressionRoot CompileFilters(IEnumerable<Token> token)
 {
     var reader = new TokenReader(token);
     var op = CompileL0(reader);
     if (reader.IsRemainToken)
         throw new FilterQueryException("不正なトークンです: " + reader.Get(), reader.RemainQuery);
     return new FilterExpressionRoot { Operator = op };
 }
開發者ID:sgfc,項目名稱:StarryEyes,代碼行數:11,代碼來源:QueryCompiler.cs

示例12: InstantiateUserValue

 private static ValueBase InstantiateUserValue(bool isRetweeter, TokenReader reader)
 {
     var selector = (Func<ValueBase, ValueBase, ValueBase>)
                    ((user, retweeter) => isRetweeter ? retweeter : user);
     if (reader.IsRemainToken && reader.LookAhead().Type != TokenType.Period)
     {
         // user representation
         return selector(new User(), new Retweeter());
     }
     reader.AssertGet(TokenType.Period);
     Token literal = reader.AssertGet(TokenType.Literal);
     switch (literal.Value)
     {
         case "protected":
         case "isProtected":
         case "is_protected":
             return selector(new UserIsProtected(), new RetweeterIsProtected());
         case "verified":
         case "isVerified":
         case "is_verified":
             return selector(new UserIsVerified(), new RetweeterIsVerified());
         case "translator":
         case "isTranslator":
         case "is_translator":
             return selector(new UserIsTranslator(), new RetweeterIsTranslator());
         case "contributorsEnabled":
         case "contributors_enabled":
         case "isContributorsEnabled":
         case "is_contributors_enabled":
             return selector(new UserIsContributorsEnabled(), new RetweeterIsContributorsEnabled());
         case "geoEnabled":
         case "geo_enabled":
         case "isGeoEnabled":
         case "is_geo_enabled":
             return selector(new UserIsGeoEnabled(), new RetweeterIsGeoEnabled());
         case "id":
             return selector(new UserId(), new RetweeterId());
         case "status":
         case "statuses":
         case "statusCount":
         case "status_count":
         case "statusesCount":
         case "statuses_count":
             return selector(new UserStatuses(), new RetweeterStatuses());
         case "friend":
         case "friends":
         case "following":
         case "followings":
         case "friendsCount":
         case "friends_count":
         case "followingsCount":
         case "followings_count":
             return selector(new UserFriends(), new RetweeterFriends());
         case "follower":
         case "followers":
         case "followersCount":
         case "followers_count":
             return selector(new UserFollowers(), new RetweeterFollowers());
         case "fav":
         case "favCount":
         case "favorite":
         case "favorites":
         case "fav_count":
         case "favoriteCount":
         case "favorite_count":
         case "favoritesCount":
         case "favorites_count":
             return selector(new UserFavroites(), new RetweeterFavroites());
         case "list":
         case "listed":
         case "listCount":
         case "list_count":
         case "listedCount":
         case "listed_count":
             return selector(new UserListed(), new RetweeterListed());
         case "screenName":
         case "screen_name":
             return selector(new UserScreenName(), new RetweeterScreenName());
         case "name":
             return selector(new UserName(), new RetweeterName());
         case "bio":
         case "desc":
         case "description":
             return selector(new UserDescription(), new RetweeterDescription());
         case "loc":
         case "location":
             return selector(new UserLocation(), new RetweeterLocation());
         case "lang":
         case "language":
             return selector(new UserLanguage(), new RetweeterLanguage());
         default:
             throw new FilterQueryException("Unexpected token: " + literal.Value,
                                            "user." + literal.Value + " " + reader.RemainQuery);
     }
 }
開發者ID:Aeri912,項目名稱:StarryEyes,代碼行數:95,代碼來源:QueryCompiler.cs

示例13: InstantiateStatusValue

 private static ValueBase InstantiateStatusValue(string value, TokenReader reader)
 {
     switch (value)
     {
         case "dm":
         case "isDm":
         case "is_dm":
         case "isMessage":
         case "is_message":
         case "isDirectMessage":
         case "is_direct_message":
             return new StatusIsDirectMessage();
         case "rt":
         case "retweet":
         case "isRetweet":
         case "is_retweet":
             return new StatusIsRetweet();
         case "favorited":
         case "isFavorited":
         case "is_favorited":
             return new StatusIsFavorited();
         case "retweeted":
         case "isRetweeted":
         case "is_retweeted":
             return new StatusIsRetweeted();
         case "replyTo":
         case "reply_to":
         case "inReplyTo":
         case "in_reply_to":
             return new StatusInReplyTo();
         case "to":
             return new StatusTo();
         case "id":
             return new StatusId();
         case "favs":
         case "favorites":
         case "favorer":
         case "favorers":
             return new StatusFavorites();
         case "rts":
         case "retweets":
         case "retweeter":
         case "retweeters":
             return new StatusRetweets();
         case "text":
         case "body":
             return new StatusText();
         case "via":
         case "from":
         case "source":
         case "client":
             return new StatusSource();
         default:
             throw new FilterQueryException("Unexpected token: " + value, value + " " + reader.RemainQuery);
     }
 }
開發者ID:Aeri912,項目名稱:StarryEyes,代碼行數:56,代碼來源:QueryCompiler.cs

示例14: InstantiateLocalUsers

 private static ValueBase InstantiateLocalUsers(string value, TokenReader reader)
 {
     UserRepresentationBase repl = GetRepresentation(value);
     if (reader.IsRemainToken && reader.LookAhead().Type == TokenType.Period)
     {
         reader.AssertGet(TokenType.Period);
         Token literal = reader.AssertGet(TokenType.Literal);
         switch (literal.Value)
         {
             case "friend":
             case "friends":
             case "following":
             case "followings":
                 return new LocalUserFollowings(repl);
             case "follower":
             case "followers":
                 return new LocalUserFollowers(repl);
             default:
                 throw new FilterQueryException("Unexpected token: " + literal.Value,
                                                repl.ToQuery() + "." + literal.Value + " " + reader.RemainQuery);
         }
     }
     return new LocalUser(repl);
 }
開發者ID:Aeri912,項目名稱:StarryEyes,代碼行數:24,代碼來源:QueryCompiler.cs

示例15: CompileL7

 private static FilterOperatorBase CompileL7(TokenReader reader)
 {
     // parse not 
     if (reader.LookAhead().Type == TokenType.Exclamation)
     {
         reader.AssertGet(TokenType.Exclamation);
         return new FilterNegate { Value = CompileL7(reader) };
     }
     if (reader.LookAhead().Value == "caseful")
     {
         reader.AssertGet(TokenType.Literal);
         return new OperatorCaseful { Value = CompileL7(reader) };
     }
     return CompileL8(reader);
 }
開發者ID:Mojopon,項目名稱:StarryEyes,代碼行數:15,代碼來源:QueryCompiler.cs


注:本文中的StarryEyes.Filters.Parsing.TokenReader類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。