锘??xml version="1.0" encoding="utf-8" standalone="yes"?>狠狠色香婷婷久久亚洲精品,久久久精品国产免费观看同学,欧美日韩国产首页http://www.shnenglu.com/vczh/zh-cnWed, 26 Nov 2025 13:55:28 GMTWed, 26 Nov 2025 13:55:28 GMT602014騫寸粓鎬葷粨http://www.shnenglu.com/vczh/archive/2015/01/09/209442.html闄堟鐎?vczh)闄堟鐎?vczh)Thu, 08 Jan 2015 22:58:00 GMThttp://www.shnenglu.com/vczh/archive/2015/01/09/209442.htmlhttp://www.shnenglu.com/vczh/comments/209442.htmlhttp://www.shnenglu.com/vczh/archive/2015/01/09/209442.html#Feedback14http://www.shnenglu.com/vczh/comments/commentRss/209442.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/209442.html

]]>
闈犺氨鐨勪唬鐮佸拰DRYhttp://www.shnenglu.com/vczh/archive/2014/07/15/207658.html闄堟鐎?vczh)闄堟鐎?vczh)Tue, 15 Jul 2014 14:44:00 GMThttp://www.shnenglu.com/vczh/archive/2014/07/15/207658.htmlhttp://www.shnenglu.com/vczh/comments/207658.htmlhttp://www.shnenglu.com/vczh/archive/2014/07/15/207658.html#Feedback9http://www.shnenglu.com/vczh/comments/commentRss/207658.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/207658.html

涓婃鏈変漢鏉ヨ姹傛垜鍐欎竴綃囨枃绔犺皥璋堜粈涔堜唬鐮佹墠鏄ソ浠g爜錛屾槸璋佹垜宸茬粡蹇樿浜?jiǎn)锛屽ソ鍍忔槸AutoHotkey榪樻槸鍟ョ殑涓撴爮鐨勪綔鑰呫傛拠寮閭d簺濂囨殑鏉℃涓嶈皥錛岄潬璋辯殑 浠g爜鏈変竴涓叡鍚岀殑鐗圭偣錛屽氨鏄疍RY銆侱RY灝辨槸Don't Repeat Yourself錛屽叾瀹炲凡緇忚浜鴻皥浜?jiǎn)濂藉骞翠簡(jiǎn)锛屼絾鏄嚑涔庢墍鏈変漢閮戒細(xì)蹇樿銆?/p>

浠涔堟槸DRY錛圖on't Repeat Yourself錛?

DRY 騫朵笉鏄寚浣犱笉鑳藉鍒朵唬鐮佽繖涔堢畝鍗曠殑銆備笉鑳絩epeat鐨勫叾瀹炴槸淇℃伅錛屼笉鏄唬鐮併傝鍒嗘瀽涓孌典唬鐮侀噷闈㈢殑浠涔堜笢瑗挎椂淇℃伅錛屽氨璺熺粰鐗╃悊棰樺仛鍙楀姏鍒嗘瀽涓鏍鳳紝鎯蟲瘡嬈?閮藉仛瀵瑰叾瀹炰笉澶鏄撱備絾鏄竴浠戒唬鐮佹繪槸瑕佷笉鏂殑淇ˉ鐨勶紝鎵浠ュ湪榪欎箣鍓嶅ぇ瀹惰鍏堝仛濂絋DD錛屼篃灝辨槸Test Driven Development銆傝繖閲屾垜瀵硅嚜宸辯殑瑕佹眰鏄鐩栫巼瑕侀珮杈?5%錛屼笉綆$敤浠涔堟墜孌碉紝鎬諱箣95%鐨勪唬鐮佺殑杈撳嚭閮借鍙楀埌媯(gè)楠屻傚綋鏈変簡(jiǎn)瓚沖澶氱殑嫻嬭瘯鍋氬悗鐩劇殑鏃?鍊欙紝涓嶇浣犱互鍚庡彂鐢熶簡(jiǎn)浠涔堬紝璀璇翠綘鍙戠幇浣燫epeat浜?jiǎn)浠涔堜笢瑗胯鏀癸紝浣犳墠鑳芥斁蹇?jī)澶ц儐鐨勫幚L敼銆傝屼笖浠庨暱榪滅殑瑙掑害鏉ョ湅錛屽仛濂絋DD鍙互灝嗗紑鍙戝嚭鐩稿悓璐ㄩ噺鐨勪唬鐮佺殑鏃墮棿緙╃煭鍒?0%宸﹀彸錛堣繖鏄垜鑷繁鐨勭粡楠屽鹼級(jí) 銆?/p>

浠涔堟槸淇℃伅

淇℃伅榪欎釜璇嶄笉澶ソ鐢ㄨ璦涓嬪畾涔夛紝涓嶈繃鎴戝彲浠ヤ婦涓緥瀛愩傝濡傝浣犺鎶婁竴涓厤緗枃浠墮噷闈㈢殑瀛楃涓叉寜鐓у垎闅旂鍒嗚В鎴愬嚑涓瓧絎︿覆錛屼綘澶ф灝變細(xì)鍐欏嚭榪欐牱鐨勪唬鐮侊細(xì)

// name;parent;description
void ReadConfig(const wchar_t* config)
{
    auto p 
= wcschr(config, L';');                            // 1
    if(!p) throw ArgumentException(L"Illegal config string"); // 2
    DoName(wstring(config, p));                               // 3
    auto q = wcschr(p + 1, L';');                             // 4
    if(!q) throw ArgumentException(L"Illegal config string"); // 5
    DoParent(wstring(p + 1, q);                               // 6
    auto r = wcschr(q + 1, L';');                             // 7
    if(r) throw ArgumentException(L"Illegal config string");  // 8
    DoDescription(q + 1);                                     // 9
}

榪欐鐭煭鐨勪唬鐮侀噸澶嶄簡(jiǎn)澶氬皯淇℃伅錛?/p>

  • 鍒嗛殧絎︾敤鐨勬槸鍒嗗彿錛?銆?銆?錛?/li>
  • 絎簩/涓変釜鐗囨鐨勭涓涓瓧絎︿綅浜庣涓/浜屼釜鍒嗗彿鐨勫悗闈紙4銆?銆?銆?錛?/li>
  • 鏍煎紡媯(gè)鏌ワ紙2銆?銆?錛?
  • 寮傚父鍐呭錛?銆?銆?錛?br />

闄や簡(jiǎn)DRY浠ュ榪樻湁涓涓棶棰橈紝灝辨槸澶勭悊description鐨勬柟娉曡窡name鍜宲arent涓嶄竴鏍鳳紝鍥犱負(fù)浠栧悗闈㈠啀涔熸病鏈夊垎鍙蜂簡(jiǎn)銆?/p>

閭h繖孌典唬鐮佽鎬庝箞鏀瑰憿錛熸湁浜涗漢鍙兘浼?xì)鎯冲垘图岄偅鎶婇噸澶嶇殑浠g爜鎶藉彇鍑轰竴涓嚱鏁板氨濂戒簡(jiǎn)錛?/p>

wstring Parse(const wchar_t& config, bool end)
{
    auto next 
= wcschr(config, L';');
    ArgumentException up(L
"Illegal config string");
    
if (next)
    {
        
if (end) throw up;
        wstring result(config, next);
        config 
= next + 1;
        
return result;
    }
    
else
    {
        
if (!end) throw up;
        wstring result(config);
        config 
+= result.size();
        
return result;
    }
}

// name;parent;description
void ReadConfig(const wchar_t* config)
{
    DoName(Parse(config, 
false));
    DoParent(Parse(config, 
false));
    DoDescription(Parse(config, 
true));
}

鏄笉鏄湅璧鋒潵榪樺緢鍒壄錛屽ソ鍍忔妸浠g爜淇敼浜?jiǎn)涔嬪悗鍙妸浜嬫儏鎼炲緱鏇翠棺兒?jiǎn)錛岃屼笖灝辯畻config瀵逛簡(jiǎn)鎴戜滑涔熶細(xì)鍒涘緩閭d釜up鍙橀噺錛屽氨浠呬粎鏄負(fù)浜?jiǎn)涓?閲嶅浠g爜銆傝屼笖榪欎喚浠g爜榪樻暎鍙戝嚭浜?jiǎn)涓浜涗笉濂界殑鍛抽亾錛屽洜涓哄浜嶯ame銆丳arent鍜孌escription鐨勫鐞嗘柟娉曡繕鏄笉鑳界粺涓錛孭arse閲岄潰閽堝 end鍙橀噺鐨勫鐞嗙湅璧鋒潵涔熸槸寰堥噸澶嶏紝浣嗗疄闄呬笂榪欐槸鏃犳硶鍦ㄨ繖鏍瘋璁$殑鍓嶆彁涓嬫秷闄ょ殑銆傛墍浠ヨ繖涓唬鐮佷篃鏄笉濂界殑錛屽厖鍏墮噺鍙槸姣旂涓浠戒唬鐮佸己涓鐐圭偣銆?br />

瀹?闄呬笂錛屼唬鐮佷箣鎵浠ヨ鍐欑殑濂斤紝涔嬫墍浠ヤ笉鑳絩epeat涓滆タ錛屾槸鍥犱負(fù)浜у搧鐙楁繪槸瑕佹敼闇姹傦紝涓嶆敼浠g爜浣犲氨瑕佹錛屾敼浠g爜浣犲氨瑕佸姞鐝紝鎵浠ヤ負(fù)浜?jiǎn)鍑彏畱淇敼浠g爜鐨勭棝鑻﹀Q?鎴戜滑涓嶈兘repeat浠諱綍淇℃伅銆備婦涓緥瀛愶紝鏈変竴澶╀駭鍝佺嫍璇達(dá)紝瑕佹妸鍒嗛殧絎︿粠鍒嗗彿鏀規(guī)垚絀烘牸錛佷竴涓嬪瓙灝辮鏀逛袱涓湴鏂逛簡(jiǎn)銆俤escription鍚庨潰瑕佸姞tag錛?榪欐牱浣犲鐞哾escription鐨勬柟娉曞張瑕佹敼浜?jiǎn)鍥犱皋Z粬鏄互絀烘牸緇撳熬涓嶆槸0緇撳熬銆?/p>

鍥犳閽堝榪欎釜鐗囨錛屾垜浠渶瑕佹妸瀹冩敼鎴愯繖鏍鳳細(xì)

vector<wstring> SplitString(const wchar_t* config, wchar_t delimiter)
{
    vector
<wstring> fragments;
    
while(auto next = wcschr(config, delimiter))
    {
        fragments.push_back(wstring(config, next));
        config 
= next + 1;
    }
    fragments.push_back(wstring(config));
    
return fragments; // C++11灝辨槸濂斤紒
}

void ReadConfig(const wchar_t* config)
{
    auto fragments 
= SplitString(config, L';');
    
if(fragments.size() != 3)
    {
        
throw ArgumentException(L"Illegal config string");
    }
    DoName(fragments[
0]);
    DoParent(fragments[
1]);
    DoDescription(fragments[
2]);
}

鎴戜滑鍙互鍙戠幇錛屽垎鍙鳳紙L';'錛夊湪榪欓噷鍙嚭鐜頒簡(jiǎn)涓嬈★紝寮傚父鍐呭涔熷彧鍑虹幇浜?jiǎn)涓嬈★紝鑰屼笖澶勭悊name銆乸arent鍜?description鐨勪唬鐮佷篃娌℃湁浠涔堝尯鍒簡(jiǎn)錛屾鏌ラ敊璇篃鏇寸畝鍗曚簡(jiǎn)銆備綘鍦ㄨ繖閲岃繕緇欎綘鐨凩ibrary澧炲姞浜?jiǎn)涓涓猄plitString鍑芥暟錛岃涓嶅畾鍦ㄤ互 鍚庝粈涔堝湴鏂瑰氨鐢ㄤ笂浜?jiǎn)锛屾瘮Parse榪欑涓撻棬鐨勫嚱鏁拌寮哄緢澶氬嶃?br />

澶у鍙互鍙戠幇錛屽湪榪欓噷閲嶅鐨勪笢瑗垮茍涓嶄粎浠呮槸澶嶅埗浜?jiǎn)浠g爜锛岃屾槸鐢變簬浣犳妸 鍚屼竴涓俊鎭暎鎾湪浜?jiǎn)浠g爜鐨勫悇涓儴鍒嗗D嚧浜?jiǎn)鏈夊緢澶氱浉杩戠殑浠g爜涔熸暎鎾湪鍚勪釜鍦版柟锛岃屼笖榪樹笉鏄偅涔堝ソ閫氳繃鎶芥垚鍑芥暟鐨勬柟娉曟潵瑙e喅銆傚洜涓哄湪榪欑鎯呭喌涓嬶紝灝辯畻浣犳妸閲嶅 鐨勪唬鐮佹娊鎴愪簡(jiǎn)Parse鍑芥暟錛屼綘鎶婂嚱鏁拌皟鐢ㄤ簡(jiǎn)鍑犳瀹為檯涓婁篃絳変簬閲嶅浜?jiǎn)淇℃伅銆傚洜姝ゆ紜殑鏂規(guī)硶灝辨槸鎶婂仛浜嬫儏鐨勬柟娉曞彉涓涓嬶紝鍐欐垚SplitString銆傝繖涓?SplitString鍑芥暟騫朵笉鏄氳繃鎶婇噸澶嶇殑浠g爜綆鍗曠殑鎶藉彇鎴愬嚱鏁拌屽仛鍑烘潵鐨勩?u>鍘繪帀閲嶅鐨勪俊鎭細(xì)璁╀綘鐨勪唬鐮佺殑緇撴瀯鍙戠敓鏈川鐨勫彉鍖?/strong>銆?/p>

榪欎釜闂鍏跺疄涔熸湁寰堝鍙樹綋錛?/p>

  • 涓嶈兘鏈塎agic Number銆侺';'鍑虹幇浜?jiǎn)寰堝閬嶅Q屽叾瀹炲氨鏄釜Magic Number銆傛墍浠ユ垜浠緇欎粬涓悕瀛楋紝璀璇磀elimiter銆?/li>
  • 涓嶈澶嶅埗浠g爜銆傝繖涓簲璇ヤ笉鐢ㄦ垜璁蹭簡(jiǎn)銆?
  • 瑙h﹁鍋氭垚姝d氦鐨勩係plitString铏界劧涓嶆槸鐩存帴鍐茬潃璇籧onfig鏉ュ啓鐨勶紝浣嗘槸瀹冨弽鏄犱簡(jiǎn)涓涓湪鍏跺畠鍦版柟涔熶細(xì)閬囧埌鐨勫父瑙佺殑闂銆傚鏋滅敤Parse鐨勯偅涓増鏈紝鏄劇劧鍙槸鐪嬭搗鏉ヨВ鍐充簡(jiǎn)闂鑰屽凡錛屽茍娌℃湁緇欎綘甯︽潵浠諱綍棰濆鐨勬晥鐩娿?/li>

淇℃伅涓鏃﹁浣爎epeat浜?jiǎn)锛屼綘鐨勪唬鐮仦兗?xì)涓嶅悓紼嬪害鐨勫嚭鐜板悇縐嶈厫鐑傛垨鑰呯牬紿楋紝涓婇潰閭d笁鏉″叾瀹炲彧鏄垜鑳芥兂鍒扮殑姣旇緝甯歌鐨勮〃鐜板艦寮忋傝繖浠朵簨鎯呬篃鍛婅瘔鎴戜滑錛屽綋楂樻墜鍛婅瘔浣犱粈涔堜粈涔堜笉鑳藉仛鐨勬椂鍊欙紝寰楁兂涓鎯寵儗鍚庣殑鍘熷洜錛屼笉鐒惰窡灝佸緩榪蜂俊鏈変粈涔堝尯鍒?/p>

]]>
瑕佸杞︽殏鍋滄洿鏂板嚑涓槦鏈?http://www.shnenglu.com/vczh/archive/2014/04/30/206776.html闄堟鐎?vczh)闄堟鐎?vczh)Wed, 30 Apr 2014 07:33:00 GMThttp://www.shnenglu.com/vczh/archive/2014/04/30/206776.htmlhttp://www.shnenglu.com/vczh/comments/206776.htmlhttp://www.shnenglu.com/vczh/archive/2014/04/30/206776.html#Feedback5http://www.shnenglu.com/vczh/comments/commentRss/206776.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/206776.html

]]>
璺焩czh鐪嬪疄渚嬪緙栬瘧鍘熺悊鈥斺斾笁錛歍inymoe涓庢棤姝т箟璇硶鍒嗘瀽http://www.shnenglu.com/vczh/archive/2014/03/23/206298.html闄堟鐎?vczh)闄堟鐎?vczh)Sun, 23 Mar 2014 08:51:00 GMThttp://www.shnenglu.com/vczh/archive/2014/03/23/206298.htmlhttp://www.shnenglu.com/vczh/comments/206298.htmlhttp://www.shnenglu.com/vczh/archive/2014/03/23/206298.html#Feedback2http://www.shnenglu.com/vczh/comments/commentRss/206298.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/206298.html鏂囩珷涓紩鐢ㄧ殑浠g爜鍧囨潵鑷?a >https://github.com/vczh/tinymoe銆?

鐪嬩簡(jiǎn)鍓嶉潰鐨勪笁綃囨枃绔狅紝澶у搴旇鍩烘湰瀵筎inymoe鐨勪唬鐮佹湁涓涓垵姝ョ殑鎰熻浜?jiǎn)銆傚湪姝g‘鍒嗘瀽"print sum from 1 to 100"涔嬪墠錛屾垜浠鍏堝緱鍒嗘瀽"phrase sum from (lower bound) to (upper bound)"榪欐牱鐨勫0鏄庛俆inymoe鐨勫嚱鏁板0鏄庡張寰堝鍏充簬block鍜宻entence鐨勯厤緗紝涓嶈繃榪欓噷騫朵笉鎵撶畻灝嗘墍鏈夌粏鑺傦紝鎴戜細(xì)灝嗛噸鐐規(guī)斁鍦ㄥ浣曞啓涓涓拡瀵規(guī)棤姝т箟璇硶鐨勯掑綊涓嬮檷璇硶鍒嗘瀽鍣ㄤ笂銆傛墍浠ユ垜浠繖閲屼笉浼?xì)娑夊強(qiáng)sentence鍜宐lock鐨勪粈涔坈ategory鍜宑ps鐨勯厤緗?

铏界劧"print sum from 1 to 100"鏃犳硶鐢ㄦ棤姝т箟鐨勮娉曞垎鏋愮殑鏂規(guī)硶鍋氬嚭鏉ワ紝浣嗘槸鎴戜滑鍙互鍊熺敤瀵?phrase sum from (lower bound) to (upper bound)"鐨勮娉曞垎鏋愮殑緇撴灉錛屽姩鎬佹瀯閫犺兘澶熷垎鏋?print sum from 1 to 100"鐨勮娉曞垎鏋愬櫒銆傝繖縐嶈娉曠湅璧鋒潵濂藉儚寰堥珮澶т笂錛屼絾鏄叾瀹炲茍娌℃湁浠涔堢壒鍒毦鐨勬妧宸с傚叧浜?鏋勯?鐨勯棶棰樻垜灝嗗湪涓嬩竴綃囨枃绔犮婅窡vczh鐪嬪疄渚嬪緙栬瘧鍘熺悊鈥斺斾笁錛歍inymoe涓庢湁姝т箟璇硶鍒嗘瀽銆嬭緇嗕粙緇嶃?

鍦ㄦ垜涔嬪墠鐨勫崥瀹㈤噷鎴戞浘緇忓啓榪囥?a href="http://www.shnenglu.com/vczh/archive/2008/06/15/53373.html">濡備綍鎵嬪啓璇硶鍒嗘瀽鍣?/a>銆嬶紝榪欑瘒鏂囩珷璁蹭簡(jiǎn)涓浜涚畝鍗曠殑鍐欓掑綊涓嬮檷璇硶鍒嗘瀽鍣ㄧ殑瑙勫垯錛屽敖綆″緢澶氫漢鏉ヤ俊璇磋繖綃囨枃绔犲府浠栦滑瑙e喅浜?jiǎn)寰堝闂锛屼絾瀹為檯涓娋l嗚妭榪樹笉澶熶赴瀵岋紝鐢ㄦ潵瀵圭紪紼嬭璦鍋氳娉曞垎鏋愮殑璇濓紝榪樻槸浼?xì)瑙夊緱澶嶆潅鎬уお楂樸傝繖綃囨枃绔犱篃鍚屾椂浣滀負(fù)銆?a href="http://www.shnenglu.com/vczh/archive/2008/06/15/53373.html">濡備綍鎵嬪啓璇硶鍒嗘瀽鍣?/a>銆嬬殑琛ュ厖銆傚ソ浜?jiǎn)锛屾垜浠紑濮嬭繘鍏ユ棤姝т箟璇硶鍒嗘瀽鐨勪富棰樺惂銆?

鎴戜滑闇瑕佺殑絎竴涓嚱鏁版槸鐢ㄦ潵璇籺oken騫跺垽鏂叾鍐呭鏄笉鏄垜浠笇鏈涚湅鍒扮殑涓滆タ銆傝繖涓嚱鏁版瘮杈冪壒鍒紝鎵浠ュ崟鐙嬁鍑烘潵璁層傚湪璇嶆硶鍒嗘瀽閲岄潰鎴戜滑宸茬粡鎶婃枃浠跺垎琛岋紝姣忎竴琛屼竴涓狢odeToken鐨勫垪琛ㄣ備絾鏄敱浜庝竴涓嚱鏁板0鏄庣嫭鍗犱竴琛岋紝鍥犳鍦ㄨ繖閲屾垜浠彧闇瑕佸姣忎竴琛岃繘琛屽垎鏋愩傛垜浠垽鏂繖涓琛屾槸鍚︿互cps銆乧ategory銆乻ymbol銆乼ype銆乸hrase銆乻entence鎴朾lock寮澶達(dá)紝濡傛灉鏄偅Tinymoe灝辮涓鴻繖涓瀹氭槸涓涓0鏄庯紝鍚﹀垯灝辨槸鏅氱殑浠g爜銆傛墍浠ヨ繖閲屽亣璁炬垜浠壘鍒頒簡(jiǎn)涓琛屼唬鐮佷互涓婇潰鐨勮繖浜泃oken浣滀負(fù)寮澶達(dá)紝浜庢槸鎴戜滑灝辮榪涘叆璇硶鍒嗘瀽鐨勭幆鑺傘備綔涓烘暣涓垎鏋愬櫒鐨勫熀紜錛屾垜浠渶瑕佷竴涓狢onsumeToken鐨勫嚱鏁幫細(xì)

浣滀負(fù)涓涓函綺圭殑C++11鐨勯」鐩紝鎴戜滑搴旇浣跨敤STL鐨勮凱浠e櫒銆傚叾瀹炲湪鍐欒娉曞垎鏋愬櫒鐨勬椂鍊欙紝鍩轟簬榪唬鍣ㄧ殑浠g爜涔熸瘮鍩轟簬"token鍦ㄦ暟緇勯噷鐨勪笅琛?鐨勪唬鐮佽綆鍗曞緱澶氥傝繖涓嚱鏁版墍鍋氱殑鍐呭鏄繖鏍風(fēng)殑錛屽畠鏌ョ湅it鎸囧悜鐨勯偅涓猼oken錛屽鏋渢oken鐨勭被鍨嬭窡tokenType鎻忚堪鐨勪竴鏍鳳紝浠栧氨it++鐒跺悗榪斿洖true錛涘惁鍒欏氨鏄敤content鍜宱wnerToken鏉ヤ駭鐢熶竴涓敊璇俊鎭姞鍏rrors鍒楄〃閲岋紝鐒跺悗榪斿洖false銆傚綋鐒?dòng)灱屽鏋滀紶杩涘幦潥勫弬鏁癷t鏈韓灝辯瓑浜巈nd錛岄偅鑷劧瑕佷駭鐢熶竴涓敊璇傝嚜鐒?dòng)灱屽嚱鏁颁綋涔熷崄鍒喗巰鍗曪細(xì)

閭e浜庢爣璇嗙鍜屾暟瀛楁庝箞鍔炲憿錛熸槑鐪間漢鑲畾涓鐪煎氨鐪嬪嚭鏉ワ紝榪欐槸緇欐鏌ョ鍙風(fēng)敤鐨勶紝璀宸︽嫭鍙楓佸彸鎷彿銆佸啋鍙峰拰鍏抽敭瀛楃瓑銆傚湪澹版槑閲岄潰鎴戜滑鏄笉闇瑕佸お澶嶆潅鐨勪笢瑗跨殑錛屽洜姝ゆ垜浠繕闇瑕佷袱澶栦竴涓嚱鏁版潵杈撳叆鏍囪瘑絎︺俆inymoe浜嬪疄涓婃湁涓や釜閽堝鏍囪瘑絎︾殑璇硶鍒嗘瀽鍑芥暟錛岀涓涓槸璇誨叆鏍囪瘑絎︼紝絎簩涓笉浠呰璇誨叆鏍囪瘑絎﹁繕瑕佸垽鏂槸鍚﹀埌浜?jiǎn)琛屾湯鍚﹀垯鎶ラ敊锛?xì)

鍦ㄨ繖閲屾垜闇瑕佸己璋冧竴涓噸鐐癸紝鍦ㄥ啓璇硶鍒嗘瀽鍣ㄧ殑鏃跺欙紝鍑芥暟鐨勫悇寮忎竴瀹氳鏁撮綈鍒掍竴銆俆inymoe鐨勮娉曞垎鏋愬嚱鏁版湁涓や釜鏍煎紡錛屽垎鍒槸閽堝parse涓琛岀殑涓涓儴鍒嗭紝鍜宲arse涓涓枃浠剁殑涓浜涜鐨勩侾arseToEnd鍜孭arseToFarest灝卞睘浜巔arse涓琛岀殑涓涓儴鍒嗙殑鍑芥暟銆傝繖縐嶅嚱鏁扮殑鏍煎紡濡備笅錛?

  1. 榪斿洖鍊間竴瀹氭槸璇硶鏍?wèi)鐨勪竴涓妭鐐廣傚湪榪欓噷鎴戜滑浠hare_ptr<SymbolName>浣滀負(fù)鏍囪瘑絎︾殑鑺傜偣銆備竴涓爣璇嗙鍙互鍚湁澶氫釜鏍囪瘑絎oken錛岃濡傝the Chinese people銆乼he real Tinymoe programmer浠涔堢殑銆傚洜姝ゆ垜浠彲浠ョ畝鍗曞湴鎺ㄦ祴SymbolName閲岄潰鏈変竴涓獀ector<CodeToken>銆傝繖涓畾涔夊彲浠ュ湪TinymoeLexicalAnalyzer.h鐨勬渶鍚庝竴閮ㄥ垎鎵懼埌銆?
  2. 鍓嶄袱涓弬鏁板垎鍒槸iterator&鍜屾寚鍚戞湯灝劇殑iterator銆傛湯灝鵑氬父鎸?浠庤繖閲屽紑濮嬫垜浠笉甯屾湜榪欎釜parser鍑芥暟鏉ヨ"錛屽綋鐒惰繖閫氬父灝辨剰鍛崇潃琛屾湯銆傛垜浠妸"鏈熬"榪欎釜姒傚康鎶藉彇鍑烘潵錛屽湪鏌愪簺鎯呭喌涓嬪彲浠ュ緱鍒版瀬澶х殑濂藉銆?
  3. 鏈鍚庝竴涓猼oken涓瀹氭槸vector<CodeError>&錛岀敤鏉ュ瓨鏀捐繃紼嬩腑閬囧埌鐨勯敊璇?

闄や簡(jiǎn)鍑芥暟鏍煎紡浠ュ錛屾垜浠繕闇瑕佹墍鏈夌殑鍑芥暟閮介伒寰煇浜涘墠緗潯浠跺拰鍚庣疆鏉′歡銆傚湪璇硶鍒嗘瀽閲岋紝濡傛灉浣犺瘯鍥懼垎鏋愪竴涓粨鏋勪絾鏄笉騫稿嚭鐜頒簡(jiǎn)閿欒錛岃繖涓椂鍊欙紝浣犳湁鍙兘鍙互榪斿洖涓涓娉曟爲(wèi)鐨勮妭鐐癸紝浣犱篃鏈夊彲鑳戒粈涔堥兘榪斿洖涓嶄簡(jiǎn)銆備簬鏄繖閲屽氨鏈変袱縐嶆儏鍐碉細(xì)

  1. 浣犲彲浠ヨ繑鍥烇紝閭e氨璇佹槑铏界劧杈撳叆鐨勪唬鐮佹湁閿欒錛屼絾鏄綘鎴愬姛鐨勮繘琛屼簡(jiǎn)閿欒鎭㈠鈥斺斿疄闄呬笂灝辨槸璇達(dá)紝浣犺寰椾綘鑷繁鍙互鐚滄祴榪欎喚浠g爜鐨勪綔鑰呭疄闄呮槸瑕佽〃杈句粈涔堟剰鎬濃斺斾簬鏄綘瑕佺Щ鍔ㄧ涓涓猧terator錛岃浠栨寚鍚戜綘絎竴涓繕娌¤鍒扮殑token錛屼互渚垮悗緇殑璇硶鍒嗘瀽榪囩▼緇х畫榪涜涓嬪幓銆?
  2. 浣犱笉鑳借繑鍥烇紝閭e氨璇佹槑浣犳仮澶嶄笉浜?jiǎn)锛屽洜姝そW竴涓猧terator涓嶈兘鍔ㄣ傚洜涓鴻繖涓嚱鏁版湁鍙兘鍙槸涓轟簡(jiǎn)嫻嬭瘯涓涓嬪綋鍓嶇殑杈撳叆鏄惁婊¤凍涓涓粈涔堢粨鏋勩傛棦鐒朵粬涓嶆槸錛岃屼笖浣犳仮澶嶄笉鍑烘潵鈥斺斾篃灝辨槸浣犵寽嫻嬩綔鑰呮湰鏉ヤ篃涓嶆墦綆楀湪榪欓噷鍐欐煇涓粨鏋勨斺斿洜姝terator涓嶈兘鍔紝琛ㄧず浣犱粈涔堥兘娌℃湁璇匯?

褰撲綘鏍規(guī)嵁榪欐牱鐨勬牸寮忓啓浜?jiǎn)寰堝璇硶鍒嗘瀽鍑芥曨C箣鍚庯紝浣犱細(xì)鍙戠幇浣犲彲浠ュ緢瀹規(guī)槗鐢ㄧ畝鍗曠粨鏋勭殑璇硶鍒嗘瀽鍑芥暟錛屾嫾鍑戝嚭涓涓鏉傜殑璇硶鍒嗘瀽鍑芥暟銆備絾鏄敱浜嶵inymoe鐨勫0鏄庡茍娌℃湁涓涓紪紼嬭璦閭d箞澶嶆潅錛屾墍浠ヨ繖縐嶅祵濂楃粨鏋勫嚭鐜扮殑嬈℃暟騫朵笉澶氾紝浜庢槸鎴戜滑榪欓噷鍏堣煩榪囧叧浜庡祵濂楃殑璁ㄨ錛岀瓑鍒板悗闈㈠叿浣撳垎鏋?鍑芥暟鎸囬拡綾誨瀷鐨勫弬鏁?鐨勬椂鍊欒嚜鐒朵細(xì)娑夊強(qiáng)鍒般?

璇翠簡(jiǎn)榪欎箞澶氾紝鎴戣寰椾篃搴旇涓奝arseToEnd鍜孭arseToFarest鐨勪唬鐮佷簡(jiǎn)銆傞鍏堟槸ParseToEnd錛?

鎴戜滑寰堝揩灝卞彲浠ュ彂鐜幫紝鍏跺疄璇硶鍒嗘瀽鍣ㄩ噷闈㈢粷澶у鏁扮瘒騫呯殑浠g爜閮芥槸鍏充簬閿欒澶勭悊鐨勶紝鐪熸澶勭悊姝g‘浠g爜鐨勯儴鍒嗗叾瀹炲緢灝戙侾arseToEnd鍋氱殑浜嬫儏涓嶅錛屼粬灝辨槸浠巌t寮濮嬩竴鐩磋鍒癳nd鐨勪綅緗紝鎶婃墍鏈変笉鏄爣璇嗙鐨則oken閮芥墧鎺夛紝鐒跺悗鎶婃墍鏈夐亣鍒扮殑鏍囪瘑絎oken閮借繛璧鋒潵浣滀負(fù)涓涓畬鏁寸殑鏍囪瘑絎︺備篃灝辨槸璇達(dá)紝ParseToEnd閬囧埌綾諱技"the real 100 Tinymoe programmer"鐨勬椂鍊欙紝浠栦細(xì)榪斿洖"the real Tinymoe programmer"錛岀劧鍚庡湪"100"鐨勫湴鏂規(guī)姤涓涓敊璇?

ParseToFarest鐨勯昏緫宸笉澶氾細(xì)

鍙槸褰撹繖涓嚱鏁伴亣鍒?the real 100 Tinymoe programmer"鐨勬椂鍊欙紝浼?xì)杩斿?the real"錛岀劧鍚庢妸鍏夋爣縐誨姩鍒?100"錛屼絾鏄病鏈夋姤閿欍?

鐪嬩簡(jiǎn)榪欏嚑涓熀鏈殑鍑芥暟涔嬪悗錛屾垜浠彲浠ヨ繘鍏ユ棰樹簡(jiǎn)銆傚仛璇硶鍒嗘瀽鍣紝褰撶劧榪樻槸浠庢枃娉曞紑濮嬨傝窡涓婁竴綃囨枃绔犱竴鏍鳳紝鎴戜滑鏉ュ皾璇曠洿鎺ユ瀯閫犱竴涓嬫枃娉曘備絾鏄娉曞垎鏋愬櫒璺熻瘝娉曞垎鏋愬櫒鐨勬枃娉曠殑鍖哄埆鏄紝璇嶆硶鍒嗘瀽鍏剁殑鏂囨硶鍙互 "瀹氫箟鍑芥暟"鍜?璋冪敤鍑芥暟"銆?

棣栧厛錛屾垜浠潵鐪媠ymbol鐨勬枃娉曪細(xì)

SymbolName ::= <identifier> { <identifier> }

Symbol ::= "symbol" SymbolName

鍏舵錛屽氨鏄痶ype鐨勫0鏄庛倀ype鏄琛岀殑錛屼笉榪囨垜浠繖閲屽彧鍏沖績(jī)寮澶寸殑涓鏍鳳細(xì)

Type ::= "type" SymbolName [ ":" SymbolName ]

鍦ㄨ繖閲岋紝涓嫭鍙蜂唬琛ㄥ彲鏈夊彲鏃狅紝澶ф嫭鍙蜂唬琛ㄩ噸澶?嬈℃垨浠ヤ笂銆傜幇鍦ㄨ鎴戜滑鏉ョ湅鍑芥暟鐨勫0鏄庛傚嚱鏁扮殑鐢熷懡鐣ヤ負(fù)澶嶆潅錛?

Function ::= ("phrase" | "sentence" | "block") { SymbolName | "(" Argument ")" } [ ":" SymbolName ]

Argument ::= ["list" | "expression" | "argument" | "assignable"] SymbolName

Argument ::= SymbolName

Argument ::= Function

Declaration ::= Symbol | Type | Function

鍦ㄨ繖閲屾垜浠湅鍒癋unction閫掑綊浜?jiǎn)鑷繁锛寴q欐槸鍥犱負(fù)鍑芥暟鐨勫弬鏁板彲浠ユ槸鍙︿竴涓嚱鏁般備負(fù)浜?jiǎn)璁q欎釜鍙傛暟璋冪敤璧鋒潵鏇村姞婕備寒涓鐐癸紝浣犲彲浠ユ妸鍙傛暟鍐欐垚鍑芥暟鐨勫艦寮忥紝璀璇達(dá)細(xì)

pharse (the number) is odd : odd numbers

聽聽聽聽return the number % 2 == 1

end

print all (phrase (the number) is wanted) in (numbers)

聽聽聽聽repeat with the number in all numbers

聽聽聽聽聽聽聽聽if the number is wanted

聽聽聽聽聽聽聽聽聽聽聽聽print the number

聽聽聽聽聽聽聽聽end

聽聽聽聽end

end

print main

聽聽聽聽print all odd numbers in array of (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

end

鎴戜滑緇?(the number) is odd"榪欎釜鍒ゆ柇涓涓暟瀛楁槸涓嶆槸濂囨暟鐨勫嚱鏁幫紝璧蜂簡(jiǎn)涓涓埆鍚嶅彨"odd numbers"錛岃繖涓埆鍚嶄笉鑳借璋冪敤錛屼絾鏄粬絳変環(huán)浜庝竴涓彧璇葷殑鍙橀噺淇濆瓨鐫濂囨暟鍑芥暟鐨勫嚱鏁版寚閽堛備簬鏄垜浠氨鍙互鎶婂畠浼犻掔粰"print all (鈥? in (鈥?"榪欎釜鍑芥暟鐨勭涓涓弬鏁頒簡(jiǎn)銆傜涓涓弬鏁板0鏄庢垚鍑芥暟錛屾墍浠ユ垜浠彲浠ュ湪print鍑芥暟鍐呯洿鎺ヨ皟鐢ㄨ繖涓弬鏁版寚鍚戠殑odd numbers鍑芥暟銆?

浜嬪疄涓奣inymoe鐨凷ymbolName鏄彲浠ュ寘鍚叧閿瓧鐨勶紝浣嗘槸鎴戜負(fù)浜?jiǎn)涓嶈瀹冨啓鐨勫お闀垮Q屼簬鏄垜灝辯畝鍗曠殑鍐欐垚浜?jiǎn)涓婇潰鐨勯偅鏉″紡瀛愩傞偅Argument鏄惁鍙互鍖呭惈鍏抽敭瀛楀憿錛熺瓟妗堝綋鐒舵槸鍙互鐨勶紝鍙槸褰撳畠浠ist銆乪xpression銆乤rgument銆乤ssignable銆乸hrase銆乻entence銆乥lock寮濮嬬殑鏃跺欙紝鎴戜滑寮鴻璁や負(fù)浠栨湁棰濆鐨勬剰涔夈?

鐜板湪涓涓猅inymoe鐨勫0鏄庣殑絎竴琛岄兘鐢盌eclaration鏉ュ畾涔夈傚綋鎴戜滑璇嗗埆鍑轟竴涓紜殑Declaration涔嬪悗錛屾垜浠氨鍙互鏍規(guī)嵁鍒嗘瀽鐨勭粨鏋滄潵瀵瑰悗闈㈢殑琛岃繘琛屽垎鏋愩傝濡傝symbol鍚庨潰娌℃湁涓滆タ錛屼簬鏄氨榪欎箞瀹屼簡(jiǎn)銆倀ype鍚庨潰閮芥槸鎴愬憳鍑芥暟錛屾墍浠ユ垜浠竴鐩存壘鍒?end"涓烘銆傚嚱鏁扮殑鍑芥暟浣撳氨鏇村鏉備簡(jiǎn)錛屾墍浠ユ垜浠細(xì)鐩存帴璺沖埌涓嬩竴涓湅璧鋒潵鍍廌eclaration鐨勪笢瑗庫(kù)斺斾篃灝辨槸浠ymbol銆乼ype銆乸hrase銆乻entence銆乥lock銆乧ps銆乧ategory寮濮嬬殑琛屻傝繖浜涙楠ら兘寰堢畝鍗曪紝鎵浠ラ棶棰樼殑閲嶇偣灝辨槸錛?strong>濡備綍鏍規(guī)嵁Declaration鐨勬枃娉曟潵澶勭悊杈撳叆鐨勫瓧絎︿覆銆?

涓轟簡(jiǎn)璁╂枃娉曞彲浠ョ湡姝g殑榪愯錛屾垜浠渶瑕佹妸瀹冨仛鎴愮姸鎬佹満銆傛牴鎹箣鍓嶇殑鎻忚堪錛岃繖涓姸鎬佸強(qiáng)浠嶇劧闇瑕佹湁"瀹氫箟鍑芥暟"鍜?鎵ц鍑芥暟"鐨勮兘鍔涖傛垜浠彲浠ュ厛鍋囪浠栦滑鏄鍒欒〃杈懼紡錛岀劧鍚庢妸鏁翠釜鐘舵佹満鐢誨嚭鏉ャ傝繖涓椂鍊欙紝"鍑芥暟"鏈韓鎴戜滑鎶婂畠鐪嬫垚鏄竴涓窡鏍囪瘑絎︽棤鍏崇殑杈撳叆錛岀劧鍚庡氨鍙互寰楀埌涓嬮潰鐨勭姸鎬佹満錛?

榪欐牱鎴戜滑鐨勭姸鎬佹満灝辨殏鏃跺畬鎴愪簡(jiǎn)銆備絾鏄幇鍦ㄨ繕涓嶈兘鐩存帴鎶婂畠杞崲鎴愪唬鐮侊紝鍥犱負(fù)褰撴垜浠亣鍒頒竴涓緭鍏ワ紝鑰屾垜浠彲浠ラ夋嫨璋冪敤鍑芥暟錛岃屼笖鍙互鐢ㄧ殑鍑芥暟榪樹笉姝竴涓殑鏃跺欙紝閭e簲璇ユ庝箞鍔炲憿錛熺瓟妗堝氨鏄媯(gè)鏌ユ垜浠殑鏂囨硶鏄笉鏄湁姝т箟銆?

鏂囨硶鐨勬涔夋槸涓涓緢鏈夋剰鎬濈殑闂銆傚湪鎴戜滑鐪熺殑瀹炶返涓涓紪璇戝櫒鐨勬椂鍊欙紝鎴戜滑浼?xì)閬囧堫C笁縐嶆涔夛細(xì)

  1. 鏂囨硶鏈韓灝辨槸鏈夋涔夌殑錛岃濡傝C++钁楀悕鐨凙* B;鐨勯棶棰樸傚綋A鏄竴涓彉閲忕殑鏃跺欙紝榪欐槸涓涓箻娉曡〃杈懼紡銆傚綋A鏄竴涓被鍨嬬殑鏃跺欙紝榪欐槸涓涓彉閲忓0鏄庤鍙ャ傚鏋滄垜浠湪璇硶鍒嗘瀽鐨勬椂鍊欎笉鐭ラ亾A鍒板簳鎸囧悜鐨勬槸浠涔堜笢瑗匡紝閭f垜浠牴鏈棤浠庡緱鐭ヨ繖涓鍙ヨ瘽鍒板簳瑕佸彇浠涔堟剰鎬濓紝浜庢槸瑕佷箞榪斿洖閿欒錛岃涔堜袱涓粨鏋滀竴璧瘋繑鍥炪傝繖灝辨槸闂硶鏈韓鍥烘湁鐨勬涔夈?
  2. 鏂囨硶鏈韓娌℃湁姝т箟錛屼絾鏄湪鍒嗘瀽鐨勮繃紼嬩腑鍗存棤娉曞湪璧版瘡涓姝ョ殑鏃跺欓兘鑳藉綆楀嚭鍞竴鐨?涓嬩竴涓姸鎬?銆傝濡傝C#钁楀悕鐨凙<B>C;闂銆傚綋A鏄竴涓彉閲忕殑鏃跺欙紝榪欎釜璇彞鏄笉鎴愮珛鐨勶紝鍥犱負(fù)C#鐨勪竴涓鍙ョ殑鏍硅妭鐐逛笉鑳芥槸涓涓搷浣滅錛堣繖閲屾槸">"錛夈傚綋A鏄竴涓被鍨嬬殑鏃跺欙紝榪欐槸涓涓彉閲忓0鏄庤鍙ャ備粠緇撴灉鏉ョ湅錛岃繖騫舵病鏈夋涔夛紝浣嗘槸褰撴垜浠瀹孉<B>鐨勬椂鍊欎粛鐒朵笉鐭ラ亾榪欎釜璇彞鐨勭粨鏋勫埌搴曟槸鍙栧摢涓縐嶃傚疄闄呬笂B浣滀負(fù)綾誨瀷鍙傛暟錛屼粬涔熷彲浠ユ湁B<C>榪欐牱鐨勭粨鏋勶紝鍥犳榪欎釜B鍙互鏄換鎰忛暱鐨勩備篃灝辨槸璇存垜浠彧鏈夊湪">"緇撴潫涔嬪悗鍐嶅璇誨嚑涓瓧絎︽墠鑳藉緱鍒版紜殑鍒ゆ柇銆傝濡傝C鏄?(1)"錛岄偅鎴戜滑鐭ラ亾A搴旇鏄竴涓ā鏉垮嚱鏁般傚鏋淐鏄竴涓悕瀛楋紝A澶氬崐搴旇鏄竴涓被鍨嬨傚洜姝ゆ垜浠湪鍋氳娉曞垎鏋愮殑鏃跺欙紝鍙兘涓ょ鎯呭喌涓璧瘋(gè)冭檻錛屽茍琛屽鐞嗐傛渶鍚庡鏋滃摢涓涓儏鍐靛垎鏋愪笉涓嬪幓浜?jiǎn)锛尀q畝鍗曠殑鎵旀帀錛屽墿涓嬬殑灝辨槸鎴戜滑鎵闇瑕佺殑銆?
  3. 鏂囨硶鏈韓娌℃湁姝т箟錛岃屼笖鍒嗘瀽鐨勮繃紼嬩腑鍙浣犳瘡涓姝ラ兘寰鍚庡鐪嬫渶澶歂涓猼oken錛岄厭鍙互綆楀嚭鍞竴鐨?涓嬩竴涓姸鎬?鍒板簳鏄粈涔堛傝繖涓兂蹇呭ぇ瀹墮兘寰堢啛鎮(zhèn)夛紝鍥犱負(fù)榪欎釜N灝辨槸LookAhead銆傛墍璋撶殑LL(1)銆丼LR(1)銆丩R(1)銆丩ALR(1)浠涔堢殑錛岃繖涓?鍏跺疄灝辨槸N=1鐨勬儏鍐點(diǎn)侼褰撶劧涓嶄竴瀹氭槸1錛屼粬涔熷彲浠ユ槸涓涓緢澶х殑鏁板瓧錛岃濡傝8銆備竴涓枃娉曠殑LookAhead鏄灝戯紝榪欐槸鏂囨硶鏈韓鍥烘湁鐨勫睘鎬с備竴涓狶R(2)鐨勭姸鎬佹満浣犻潪瑕佸湪璇硶鍒嗘瀽鐨勬椂鍊欏彧LookAhead涓涓猼oken錛岄偅涔熶細(xì)閬囧埌絎簩縐嶆涔夌殑鎯呭喌銆傚鏋淐璇█娌℃湁typedef鐨勮瘽錛岄偅浠栧氨鏄竴涓甫鏈塋ookAhead鐨勬病鏈夋涔夌殑璇█浜?jiǎn)銆?

鐪嬩竴鐪兼垜浠垰鎵嶅啓鍑烘潵鐨勬枃娉曪紝鏄庢樉灝辨槸LookAhead=0鐨勬儏鍐碉紝鑰屼笖榪炲乏閫掑綊閮芥病鏈夛紝鍐欒搗鏉ヨ偗瀹氬緢瀹規(guī)槗銆傞偅鎺ヤ笅鏉ユ垜浠鍋氱殑灝辨槸緇?鍑芥暟"綆梖irst set銆備竴涓嚱鏁扮殑first set錛岄【鍚嶆濅箟灝辨槸錛屼粬鐨勭涓涓猼oken閮藉彲浠ユ槸浠涔堛係ymbolName銆丼ymbol銆乀ype銆丗unction閮戒笉鐢ㄧ湅浜?jiǎn)锛屽洜湄?fù)浠栦滑鐨勬枃娉曠涓涓緭鍏ラ兘鏄痶oken錛岄偅灝辨槸浠栦滑鐨刦irst set銆傛渶鍚庡氨鍓╀笅Argument銆侫rgument鐨勭涓涓猼oken闄や簡(jiǎn)list銆乪xpression銆乤rgument鍜宎ssignable浠ュ錛岃繕鏈塅unction銆傚洜姝rgument鐨刦irst set灝辨槸榪欎簺token鍔犱笂Function鐨刦irst set銆傚鏋滄枃娉曟湁宸﹂掑綊鐨勮瘽錛屼篃鍙互鐢ㄧ被浼肩殑鏂規(guī)硶鍋氾紝鍙鎴戜滑鍦ㄥ嚱鏁癆->B->C->鈥?>A鐨勬椂鍊欙紝鐭ラ亾A姝e湪璁$畻浜庢槸榪斿洖絀洪泦灝卞彲浠ヤ簡(jiǎn)銆傚綋鐒?dòng)灱屽彧鏈夊乏閫掑綊鎵嶄細(xì)閬囧埌榪欑鎯呭喌銆?

鐒跺悗鎴戜滑媯(gè)鏌ヤ竴涓嬫瘡涓涓姸鎬侊紝鍙互鍙戠幇錛屼換浣曚竴涓姸鎬佸嚭鍘葷殑鎵鏈夎竟錛屼粬鎺ュ彈鐨則oken鎴栬呭嚱鏁扮殑first set閮芥槸娌℃湁浜ら泦鐨勩傝濡侫rgument鐨?鐘舵侊紝絎竴鏉¤竟鎺ュ彈鐨則oken銆佺浜屾潯杈規(guī)帴鍙楃殑SymbolName鐨刦irst set錛屽拰絎笁鏉¤竟鎺ュ彈鐨凢unction鐨刦irst set錛屾槸娌℃湁浜ら泦鐨勶紝鎵浠ユ垜浠氨鍙互鏂畾錛岃繖涓枃娉曚竴瀹氭病鏈夋涔夈傛寜鐓т笂嬈$姸鎬佹満鍒頒唬鐮佺殑鍐欐硶錛屾垜浠彲浠ユ満姊扮殑鍐欏嚭浠g爜浜?jiǎn)銆傚啓浠g爜鐨勬椂鍊欙紝鎴戜滑鎶婃瘡涓涓枃娉曠殑鍑芥暟錛岄兘鍐欐垚涓涓狢++鐨勫嚱鏁般傛瘡鍒頒竴涓姸鎬佺殑鏃跺欙紝鎴戜滑鐪嬩竴涓嬪綋鍓嶇殑token鏄粈涔堬紝鐒跺悗鍐嶅喅瀹氳蛋鍝潯杈廣傚鏋滈変腑鐨勮竟鏄痶oken杈癸紝閭f垜浠氨璺寵繃涓涓猼oken銆傚鏋滈変腑鐨勮竟鏄嚱鏁拌竟錛岄偅鎴戜滑涓嶈煩榪噒oken錛岃漿鑰岃皟鐢ㄩ偅涓嚱鏁幫紝璁╁嚱鏁拌嚜宸卞幓璺硉oken銆傘?a href="http://www.shnenglu.com/vczh/archive/2008/06/15/53373.html">濡備綍鎵嬪啓璇硶鍒嗘瀽鍣?/a>銆嬬敤鐨勪篃鏄竴鏍風(fēng)殑鏂規(guī)硶錛屽鏋滃榪欎釜榪囩▼涓嶆竻妤氱殑錛屽彲浠ュ啀鐪嬩竴閬嶈繖涓枃绔犮?

浜庢槸鎴戜滑鍒頒簡(jiǎn)瀹氫箟璇硶鏍?wèi)鐨勬椂鍊欎簡(jiǎn)銆傚垢榪愮殑鏄紝鎴戜滑鍙互鐩存帴浠庢枃娉曚笂鐪嬪埌璇硶鏍?wèi)鐨勫舰鐘跺Q岀劧鍚庣◢寰仛涓鐐瑰井璋冨氨鍙互浜?jiǎn)銆傛垜浠妸姣忎竴涓嚱鏁伴兘鐪嬫垚涓涓被錛岀劧鍚庝嬌鐢ㄤ笅闈㈢殑瑙勫垯錛?

  1. 瀵逛簬A銆丄 B銆丄 B C絳夌殑鎯呭喌錛屾垜浠漿鎹㈡垚class閲岄潰鏈夎嫢騫蹭釜鎴愬憳鍙橀噺銆?
  2. 瀵逛簬A | B鐨勬儏鍐碉紝鎴戜滑鎶婂畠鍋氭垚緇ф壙錛孉鐨勮娉曟爲(wèi)鍜孊鐨勮娉曟爲(wèi)緇ф壙鑷竴涓熀綾伙紝鐒跺悗榪欎釜鍩虹被鐨勬寚閽堝氨鏀懼湪class閲岄潰鍋氭垚鍛樺彉閲忋?
  3. 瀵逛簬{ A }錛屾垨鑰匒 { A }鐨勬儏鍐碉紝閭d釜鎴愬憳鍙橀噺灝辨槸涓涓獀ector銆?
  4. 瀵逛簬[ A ]鐨勬儏鍐碉紝鎴戜滑灝卞綋A鐪嬶紝鍖哄埆鍙槸錛岃繖涓垚鍛樺彉閲忓彲浠ュ~nullptr銆?

瀵逛簬姣忎竴涓嚱鏁幫紝瑕佷笉瑕佺敤shared_ptr鏉ヨ鍒欒浠佽鏅恒備簬鏄垜浠彲浠ョ洿鎺ラ氳繃涓婇潰鐨勬枃娉曞緱鍒版垜浠墍闇瑕佺殑璇硶鏍?wèi)锛?xì)

棣栧厛鏄疭ymbolName錛?

鍏舵鏄疭ymbol錛?

鐒跺悗鏄疶ype錛?

鎺ヤ笅鏉ユ槸Argument錛?

鏈鍚庢槸Function錛?

澶у鍙互鐪嬪埌錛屽湪Argument閭i噷錛屽悓鏃跺嚭鍘葷殑涓夋潯杈瑰氨緇勬垚浜?jiǎn)涓変釜瀛惥c伙紝閮界戶鎵胯嚜FunctionFragment銆傚浘涓孩鑹茬殑閮ㄥ垎灝辨槸Tinymoe婧愪唬鐮侀噷鍦ㄤ笂榪扮殑鏂囨硶閲屽嚭鐜扮殑閭i儴鍒嗐傝嚦浜庝負(fù)浠涔堣繕鏈夊鍑烘潵鐨勯儴鍒嗭紝鍏跺疄鏄洜涓鴻繖閲岀殑鏂囨硶鏄負(fù)浜?jiǎn)鍙櫂q版柟渚跨畝鍖栬繃鐨勩傝嚦浜嶵inymoe鍏充簬鍑芥暟澹版槑鐨勬墍鏈夎娉曞彲浠ュ垎鍒湅涓嬮潰鐨勫洓涓猤ithub鐨剋iki page錛?

https://github.com/vczh/tinymoe/wiki/Phrases,-Sentences-and-Blocks

https://github.com/vczh/tinymoe/wiki/Manipulating-Functions

https://github.com/vczh/tinymoe/wiki/Category

https://github.com/vczh/tinymoe/wiki/State-and-Continuation

鍦ㄦ湰绔犵殑鏈熬錛屾垜灝嗗悜澶у灞曠ずTinymoe鍏充簬鍑芥暟澹版槑鐨勯偅涓涓狿arse鍑芥暟銆傛枃绔犲凡緇忔妸鎵鏈夊叧閿殑鐭ヨ瘑鐐歸兘璁蹭簡(jiǎn)錛屽叿浣撴庝箞鍋氬ぇ瀹跺彲浠ヤ笂https://github.com/vczh/tinymoe 闃呰婧愪唬鐮佹潵瀛︿範(fàn)銆?

棣栧厛鏄垜浠殑鍑芥暟澶達(dá)細(xì)

鍥炴兂涓涓嬫垜浠箣鍓嶈鍒扮殑鍏充簬璇硶鍒嗘瀽鍑芥暟鐨勬牸寮忥細(xì)

  1. 榪斿洖鍊間竴瀹氭槸璇硶鏍?wèi)鐨勪竴涓妭鐐廣傚湪榪欓噷鎴戜滑浠hare_ptr<SymbolName>浣滀負(fù)鏍囪瘑絎︾殑鑺傜偣銆備竴涓爣璇嗙鍙互鍚湁澶氫釜鏍囪瘑絎oken錛岃濡傝the Chinese people銆乼he real Tinymoe programmer浠涔堢殑銆傚洜姝ゆ垜浠彲浠ョ畝鍗曞湴鎺ㄦ祴SymbolName閲岄潰鏈変竴涓獀ector<CodeToken>銆傝繖涓畾涔夊彲浠ュ湪TinymoeLexicalAnalyzer.h鐨勬渶鍚庝竴閮ㄥ垎鎵懼埌銆?
  2. 鍓嶄袱涓弬鏁板垎鍒槸iterator&鍜屾寚鍚戞湯灝劇殑iterator銆傛湯灝鵑氬父鎸?浠庤繖閲屽紑濮嬫垜浠笉甯屾湜榪欎釜parser鍑芥暟鏉ヨ"錛屽綋鐒惰繖閫氬父灝辨剰鍛崇潃琛屾湯銆傛垜浠妸"鏈熬"榪欎釜姒傚康鎶藉彇鍑烘潵錛屽湪鏌愪簺鎯呭喌涓嬪彲浠ュ緱鍒版瀬澶х殑濂藉銆?
  3. 鏈鍚庝竴涓猼oken涓瀹氭槸vector<CodeError>&錛岀敤鏉ュ瓨鏀捐繃紼嬩腑閬囧埌鐨勯敊璇?

鎴戜滑鍙互娓呮鍦扮湅鍒拌繖涓嚱鏁版弧瓚充笂鏂囨彁鍑烘潵鐨勪笁涓姹傘傚墿涓嬫潵鐨勫弬鏁版湁涓や釜錛岀涓涓槸decl錛屽鏋滀笉涓虹┖閭d唬琛ㄨ皟鐢ㄥ嚱鏁扮殑浜哄凡緇忓府浣犲惂璇硶鏍?wèi)缁檔ew鍑烘潵浜?jiǎn)锛屼綘搴旇鐩存帴鋴社敤瀹冦傞涓涓弬鏁皁wnerToken鍒欐槸涓轟簡(jiǎn)浜х敓璇硶閿欒浣跨敤鐨勩傜劧鍚庢垜浠湅浠g爜錛?

絎竴姝ワ紝鎴戜滑鍒ゆ柇杈撳叆鏄惁涓虹┖錛岀劧鍚庢牴鎹渶瑕佹姤閿欙細(xì)

絎簩姝ワ紝鏍規(guī)嵁絎竴涓猼oken鏉ョ‘瀹氬嚱鏁扮殑褰㈠紡鏄痯hrase銆乻entence榪樻槸block錛屽茍璁板綍鍦ㄦ垚鍛樺彉閲弔ype閲岋細(xì)

絎笁姝ユ槸涓涓驚鐜紝鎴戜滑鏍規(guī)嵁褰撳墠鐨則oken錛堣繕璁頒笉璁板緱涔嬪墠璇磋繃錛岃鍏堢湅涓涓媡oken鏄粈涔堬紝鐒跺悗鍐嶅喅瀹氳蛋鍝潯杈癸紵錛夋潵鍐沖畾鎴戜滑鎺ヤ笅鏉ヨ鍒嗘瀽鐨勶紝鏄疉rgumentFragment鐨勪袱涓瓙綾伙紙鍒嗗埆鏄疺ariableArgumentFragment鍜孎unctionArgumentFragment錛夛紝榪樻槸鏅氱殑鍑芥暟鍚嶇殑涓閮ㄥ垎錛岃繕鏄鍑芥暟宸茬粡緇撴潫浜?jiǎn)锛岄亣鍒颁簡(jiǎn)涓涓啋鍙鳳紝鍥犳寮濮嬪垎鏋愬埆鍚嶏細(xì)

鏈鍚庡氨涓嶈創(chuàng)浜?jiǎn)锛屾槸妫鏌ユ牸寮忔槸鍚︽弧瓚寵涔夌殑涓浜涗唬鐮侊紝璀璇碽lock鐨勫嚱鏁板悕蹇呴』鐢卞弬鏁板紑濮嬪暒錛屾垨鑰卲hrase鐨勫弬鏁頒笉鑳芥槸argument鍜宎ssignable絳夈?

榪欑瘒鏂囩珷灝卞埌姝ょ粨鏉熶簡(jiǎn)錛屽笇鏈涘ぇ瀹跺湪鐪嬩簡(jiǎn)榪欑墖鏂囩珷涔嬪悗錛岄厤鍚坵iki鍏充簬璇硶鐨勫叏闈㈡弿榪幫紝宸茬粡鐭ラ亾濡備綍瀵筎inymoe鐨勫0鏄庨儴鍒嗚繘琛岃娉曞垎鏋愩傜揣鎺ョ潃灝辨槸涓嬩竴綃囨枃绔犫斺擳inymoe涓庡甫姝т箟璇硶鍒嗘瀽浜?jiǎn)锛屼細(xì)璁╁ぇ瀹舵槑鐧藉Q屾兂瀵硅濡?print sum from 1 to 100"榪欐牱鐨勪唬鐮佸仛璇硶鍒嗘瀽錛屼篃涓嶉渶瑕佸澶嶆潅鐨勬墜孌靛氨鍙互鍋氬嚭鏉ャ?/p>

闄堟鐎?vczh) 2014-03-23 16:51 鍙戣〃璇勮
]]>
璺焩czh鐪嬪疄渚嬪緙栬瘧鍘熺悊鈥斺斾簩錛氬疄鐜癟inymoe鐨勮瘝娉曞垎鏋?/title><link>http://www.shnenglu.com/vczh/archive/2014/03/02/206014.html</link><dc:creator>闄堟鐎?vczh)</dc:creator><author>闄堟鐎?vczh)</author><pubDate>Sun, 02 Mar 2014 15:44:00 GMT</pubDate><guid>http://www.shnenglu.com/vczh/archive/2014/03/02/206014.html</guid><wfw:comment>http://www.shnenglu.com/vczh/comments/206014.html</wfw:comment><comments>http://www.shnenglu.com/vczh/archive/2014/03/02/206014.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.shnenglu.com/vczh/comments/commentRss/206014.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/vczh/services/trackbacks/206014.html</trackback:ping><description><![CDATA[<p>鏂囩珷涓紩鐢ㄧ殑浠g爜鍧囨潵鑷?a >https://github.com/vczh/tinymoe</a>銆? </p><p> 聽</p><p>瀹炵幇Tinymoe鐨勭涓姝ヨ嚜鐒舵槸涓涓瘝娉曞垎鏋愬櫒銆傝瘝娉曞垎鏋愬叾鎵浣滅殑浜嬫儏寰堢畝鍗曪紝灝辨槸鎶婁竴浠戒唬鐮佸垎鍓叉垚鑻ュ共涓猼oken錛岃褰曚笅浠栦滑鎵鍦ㄦ枃浠剁殑浣嶇疆錛屼互鍙?qiáng)涓㈡帀涓嶅繀瑕佺殑淇℃伅銆備絾鏄疶inymoe鏄竴涓寜琛屽垎鍓茬殑璇█錛岃嚜鐒秚oken鍒楄〃涔熷氨鏄簩緇寸殑錛岀涓緇存槸琛岋紝絎簩緇存槸姣忎竴琛岀殑token銆傚湪緇х畫璁茶瘝娉曞垎鏋愬櫒涔嬪墠錛屽厛鐪嬬湅Tinymoe鍖呭惈澶氬皯token錛? </p><ul><li><div style="text-align: justify"><span style="font-size:10pt">絎﹀彿錛?銆?銆?銆?銆?amp;銆?銆?銆?銆?銆乗銆?銆?lt;銆?gt;銆?lt;=銆?gt;=銆?銆?lt;> </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">鍏抽敭瀛楋細(xì)module銆乽sing銆乸hrase銆乻entence銆乥lock銆乻ymbol銆乼ype銆乧ps銆乧ategory銆乪xpression銆乤rgument銆乤ssignable銆乴ist銆乪nd銆乤nd銆乷r銆乶ot </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">鏁板瓧錛?23銆?56.789 </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">瀛楃涓詫細(xì)"abc\r\ndef" </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">鏍囪瘑絎︼細(xì)tinymoe </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">娉ㄩ噴錛?- this is a comment </span></div></li></ul><p> 聽</p><p>Tinymoe瀵逛簬token鏈変竴涓壒孌婄殑瑙勫畾錛屽氨鏄瓧絎︿覆鍜屾敞閲婇兘鏄崟琛岀殑銆傚洜姝ゅ鏋滀竴涓瓧絎︿覆鍦ㄦ病鏈夌粨鏉熶箣鍓嶅氨閬囧埌浜?jiǎn)鎹㈣锛岄偅涔垬q欑鍐欐硶瀹氫箟涓轟綘閬囧埌浜?jiǎn)涓涓病鏈夊彸鍙屽紩鍙風(fēng)殑瀛楃涓詫紝闇瑕佹姤涓敊錛岀劧鍚庝笅涓琛屽氨涓嶆槸榪欎釜瀛楃涓茬殑鍐呭浜?jiǎn)銆? </p><p> 聽</p><p>涓涓瘝娉曞垎鏋愬櫒鎵闇瑕佸仛鐨勪簨鎯咃紝灝辨槸鎶婁竴涓瓧絎︿覆鍒嗚В鎴愭弿榪版娉曠殑鏁版嵁緇撴瀯銆傛棦鐒朵笂闈㈠凡緇忚鍒癟inymoe鐨則oken鍒楄〃鏄簩緇寸殑錛屽洜姝ゆ暟鎹粨鏋勮偗瀹氫細(xì)浣撶幇榪欎釜瑙傜偣銆俆inymoe鐨勮瘝娉曞垎鏋愬櫒浠g爜鍙互鍦ㄨ繖閲屾壘鍒幫細(xì)<a >https://github.com/vczh/tinymoe/blob/master/Development/Source/Compiler/TinymoeLexicalAnalyzer.h</a>銆? </p><p> 聽</p><p>棣栧厛鏄痶oken錛? </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh1.png" alt=""/> </p><p>CodeTokenType鏄竴涓灇涓劇被鍨嬶紝鏍囪涓涓猼oken鐨勭被鍨嬨傝繖涓被鍨嬫瘮杈冪粏鍖栵紝姣忎竴涓叧閿瓧鏈夎嚜宸辯殑綾誨瀷錛屾瘡涓涓鍙蜂篃鏈夎嚜宸辯殑綾誨瀷錛屽墿涓嬬殑鎸夌綾繪潵鍒嗐傛垜浠彲浠ョ湅鍒皌oken闇瑕佽褰曠殑鏈鍏抽敭鐨勪笢瑗垮彧鏈変笁涓細(xì)綾誨瀷銆佸唴瀹瑰拰浠g爜浣嶇疆銆傚湪token璁板綍浠g爜浣嶇疆鏄崄鍒嗛噸瑕佺殑錛屾紜湴璁板綍浠g爜浣嶇疆鍙互璁╀綘鑳藉鎶ュ憡甯︿綅緗殑閿欒銆佷粠璇硶鏍?wèi)鐨勮妭鐐箻q樺師鎴愪唬鐮佷綅緗佺敋鑷沖湪璋冭瘯鐨勬椂鍊欏彲浠ユ妸鎸囦護(hù)涔熸崲鎴愪綅緗? </p><p> 聽</p><p>榪欓噷闇瑕佹彁鍒扮殑鏄紝string_t鏄竴涓猼ypedef錛屽叿浣撶殑澹版槑鍙互鍦ㄨ繖閲岀湅鍒幫細(xì)<a >https://github.com/vczh/tinymoe/blob/master/Development/Source/TinymoeSTL.h</a>銆俆inymoe鏄畬鍏ㄧ敱鏍囧噯鐨凜++11鍜孲TL鍐欐垚鐨勶紝浣嗘槸涓轟簡(jiǎn)閫傚簲涓嶅悓鎯呭喌鐨勯渶瑕侊紝Tinymoe鍒嗕負(fù)渚濊禆code page鐨勭増鏈拰Unicode鐗堟湰銆傚鏋滅紪璇慣inymoe浠g爜鐨勬椂鍊欏0鏄庝簡(jiǎn)鍏ㄥ眬鐨勫畯UNICODE_TINYMOE鐨勮瘽錛岄偅Tinymoe鎵鏈夌殑瀛楃澶勭悊灝嗕嬌鐢╳char_t錛屽惁鍒欎嬌鐢╟har銆俢har鐨勭被鍨嬪拰Tinymoe緙栬瘧鍣ㄥ湪榪愯鐨勬椂鍊欐搷浣滅郴緇熷綋鍓嶇殑code page鏄粦瀹氱殑銆傛墍浠ヨ繖閲屼細(xì)鏈夌被浼約tring_t鍟娿乮fstream_t鍟娿乧har_t絳夌被鍨嬶紝浼?xì)鍦ㄤ笉鍚岀殑缂栬瘧閫夐」鐨勫獎(jiǎng)鍝嶄笅鎸囧悜涓嶅悓鐨凷TL綾誨瀷鎴栬呭師鐢熺殑C++綾誨瀷銆俫ithub涓婄殑VC++2013宸ョ▼浣跨敤鐨勬槸wchar_t鐨勭増鏈紝鎵浠tring_t灝辨槸std::wstring銆? </p><p> 聽</p><p>Tinymoe鐨勮瘝娉曞垎鏋愬櫒闄や簡(jiǎn)token鐨勭被鍨嬩互澶栵紝鑲畾榪橀渶瑕佸畾涔夋暣涓枃浠剁粨鏋勫湪璇嶆硶鍒嗘瀽鍚庣殑緇撴灉錛? </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh2.png" alt=""/> </p><p>榪欎釜鏁版嵁緇撴瀯浣撶幇浜?Tinymoe鐨則oken鍒楄〃鏄簩緇寸殑"鐨勮繖涓鐐廣備竴涓枃浠朵細(xì)琚瘝娉曞垎鏋愬櫒澶勭悊鎴愪竴涓猻hared_ptr<CodeFIle>瀵硅薄錛孋odeFile::lines璁板綍浜?jiǎn)鎵鏈夐潪絀虹殑琛岋紝CodeLine::tokens璁板綍浜?jiǎn)璇ヨ鐨勬墍鏈塼oken銆? </p><p> 聽</p><p>鐜板湪璁╂垜浠潵鐪嬭瘝娉曞垎鏋愮殑鍏蜂綋榪囩▼銆傚叧浜庡浣曚粠姝e垯琛ㄨ揪寮忔瀯閫犺瘝娉曞垎鏋愬櫒鍙互鍦ㄨ繖閲岋紙<a href="http://www.shnenglu.com/vczh/archive/2008/05/22/50763.html">http://www.shnenglu.com/vczh/archive/2008/05/22/50763.html</a>錛夌湅鍒幫紝涓嶈繃鎴戜滑浠婂ぉ瑕佽涓璁插浣曚漢鑲夋瀯閫犺瘝娉曞垎鏋愬櫒銆傛柟娉曞叾瀹炴槸涓鏍風(fēng)殑錛岄鍏堜漢鑲夋瀯閫犵姸鎬佹満錛岀劧鍚庢妸鐢ㄧ姸鎬佹満鍒嗘瀽杈撳叆鐨勫瓧絎︿覆鐨勪唬鐮佹妱榪囨潵灝卞彲浠ヤ簡(jiǎn)銆備絾鏄緢灝戞湁浜轟細(xì)瑙h﹀緱閭d箞寮錛屽洜涓鴻繖鏍峰啓寰堝鏄撶湅涓嶆噦錛屽叾嬈℃湁鍙兘浼?xì)閬囧堫C竴浜涙瀬绔儏鍐墊槸浣犳棤娉曠敤綰補(bǔ)鐨勬鍒欒〃杈懼紡鏉ュ垎璇嶇殑錛岃濡傝C++鐨剅aw string literal錛歊"tinymoe(榪欓噷鐨勫瓧絎︿覆娌℃湁杞箟)tinymoe"銆備竴涓敤銆怰"<涓浜涘瓧絎?gt;(銆戝紑濮嬬殑瀛楃涓插彧鑳界敱銆?<鍚屾牱鐨勫瓧絎?gt;"銆戞潵緇撴潫錛岃欏哄埄鍒嗘瀽榪欑鎯呭喌錛屽彧鑳介氳繃鍦ㄧ姸鎬佹満閲岄潰鍋歨ack鎵嶈兘瑙e喅銆傝繖灝辨槸涓轟粈涔堟垜浠漢鑲夋瀯閫犺瘝娉曞垎鏋愬櫒鐨勬椂鍊欙紝浼?xì)鎶婄姸鎬佸拰鍔ㄤ綔閮芥販鍦ㄤ竴璧峰啓錛屽洜涓鴻繖鏍蜂究浜庡鐞嗙壒孌婃儏鍐點(diǎn)? </p><p> 聽</p><p>涓嶈繃騫稿ソ鐨勬槸錛孴inymoe騫舵病鏈夎繖縐嶆儏鍐靛彂鐢熴傛墍浠ユ垜浠彲浠ョ洿鎺ヤ粠鐘舵佹満鍏ユ墜銆備負(fù)浜?jiǎn)绠鍗曡搗瑙侊紝鎴戝湪涓嬮潰鐨勭姸鎬佹満涓幓鎺夋墍鏈変笉鏄?鍜?鐨勭鍙楓傞鍏堬紝鎴戜滑闇瑕佷竴涓搗濮嬬姸鎬佸拰涓涓粨鏉熺姸鎬侊細(xì) </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh3.png" alt=""/> </p><p> 聽</p><p>棣栧厛鎴戜滑娣誨姞鏁存暟鍜屾爣璇嗙榪涘幓錛? </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh4.png" alt=""/> </p><p> 聽</p><p>鍏舵鏄姞鍑忓拰嫻偣錛? </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh5.png" alt=""/> </p><p> 聽</p><p>鏈鍚庢妸瀛楃涓插拰娉ㄩ噴琛ュ叏錛? </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh6.png" alt=""/> </p><p> 聽</p><p>榪欐牱鐘舵佹満灝卞凡緇忓畬鎴愪簡(jiǎn)銆傝榪囩紪璇戝師鐞嗙殑鍙兘浼?xì)闂Q屼負(fù)浠涔堢粓緇撶姸鎬侀兘鏄敱铏氱嚎鑰屼笉鏄甫鏈夎緭鍏ョ殑瀹炵幇鎸囧悜鐨勶紵鍥犱負(fù)铏氱嚎鍦ㄨ繖閲屾湁鐗規(guī)畩鐨勬剰涔夛紝涔熷氨鏄瀹冧笉鑳界Щ鍔ㄨ緭鍏ョ殑瀛楃涓茬殑鎸囬拡錛岃屼笖浠栬繕瑕佽礋璐f坊鍔犱竴涓猼oken銆傚綋鐘舵佽煩鍒癊nd涔嬪悗錛岄偅浠栧氨浼?xì)鍙樻垚Start錛屾墍浠?strong>瀹為檯涓奡tart鍜孍nd鏄悓涓涓姸鎬?/strong>銆傝繖涓姸鎬佹満涔熶笉鏄緭鍏ヤ粈涔堝瓧絎﹂兘鑳借煩杞埌涓嬩竴涓姸鎬佺殑銆傛墍浠?strong>褰撲綘鍙戠幇杈撳叆鐨勫瓧絎﹁浣犳棤璺彲璧扮殑鏃跺欙紝浣犲氨鏄亣鍒頒簡(jiǎn)涓涓瘝娉曢敊璇?/strong>銆? </p><p> 聽</p><p>榪欐牱鎴戜滑鐨勮璁″氨綆楀畬鎴愪簡(jiǎn)錛屾帴涓嬫潵灝辨槸濡備綍鐢–++鏉ュ疄鐜板畠浜?jiǎn)銆備負(fù)浜?jiǎn)璁╀唬鐮佹洿瀹规槗闃呰锛屾垜浠簲璇ゾl橲tart鍜?-9榪欎箞澶氱姸鎬佽搗鍚嶅瓧錛屽仛娉曞涓嬶細(xì) </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh7.png" alt=""/> </p><p>鍦ㄨ繖閲岀被浼肩姸鎬?榪欐牱鐨勭姸鎬佽鎴戠渷鐣ユ帀浜?jiǎn)锛屽洜湄?fù)榪欎釜鐘舵佸敮涓鐨勫嚭璺氨鏄櫄綰匡紝鎵浠ヨ煩鍒拌繖涓姸鎬佹剰鍛崇潃浣犺绔嬪埢鎵ц铏氱嚎錛屼篃灝辨槸璇翠綘涓嶉渶瑕佸仛"璺沖埌榪欎釜鐘舵?榪欎釜鍔ㄤ綔銆傚洜姝ゅ畠涓嶉渶瑕佹湁涓涓悕瀛椼? </p><p> 聽</p><p>鐒跺悗浣犲彧瑕佹寜鐓т笅闈㈢殑鍋氭硶緲昏瘧榪欎釜鐘舵佹満灝卞彲浠ヤ簡(jiǎn)錛? </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh8.png" alt=""/> </p><p> 聽</p><p>鍙鍐欏埌榪欓噷錛岄偅涔堟垜浠氨鍒濇瀹屾垚浜?jiǎn)璇嶆硶鍒嗘瀽鍣ㄤ簡(jiǎn)銆傚叾瀹炰換浣曠郴緇熺殑涓昏鍔熻兘閮芥槸鐩稿瀹規(guī)槗瀹炵幇鐨勶紝寰寰鏄瑕佺殑鍔熻兘鎵嶉渶瑕佽姳璐瑰ぇ閲忕殑綺懼姏鏉ュ畬鎴愶紝鑰屼笖榪樺緢瀹規(guī)槗鍑洪敊銆傚湪榪欓噷"嬈¤鐨勫姛鑳?灝辨槸鈥斺旇褰晅oken鐨勮鍒楀彿錛岃繕鏈夌淮鎶odeFile::lines閬垮厤絀鴻鐨勫嚭鐜幫紒 </p><p> 聽</p><p>灝界鎴戝凡緇忓仛榪囦簡(jiǎn)閭d箞澶氭璇嶆硶鍒嗘瀽鍣紝浣嗘槸鎴戜粛鐒舵棤娉曚竴姘斿懙鎴愬啓瀵癸紝浠嶇劧浼?xì)鍑轰竴浜沚ug銆傞潰瀵圭紪璇戝櫒榪欑綰綆楃▼搴忥紝debug鐨勬渶濂芥柟娉曞氨鏄啓鍗曞厓嫻嬭瘯銆備笉榪囧浜庝笉鐔熸?zhèn)夊崟鍏儖箣璇曠殑錆h鏉ヨ鍙兘寰堥毦涓涓嬪瓙鎯沖埌瑕佸仛浠涔堟祴璇曪紝鍦ㄨ繖閲屾垜鍙互鎶婃垜緇橳inymoe璋㈢殑涓閮ㄥ垎鍗曞厓嫻嬭瘯鍦ㄨ繖閲岃創(chuàng)涓涓嬨? </p><p> 聽</p><p>絎竴涓紝褰撶劧鏄紶璇翠腑鐨?Hello, world!"嫻嬭瘯浜?jiǎn)锛?xì) </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh9.png" alt=""/> </p><p> 聽</p><p>TEST_CASE鍜孴EST_ASSERT錛堣繖閲屾殏鏃舵病鏈夌洿鎺ョ敤鍒癟EST_ASSERT錛夋槸鎴戜負(fù)浜?jiǎn)寮鍙慣inymoe闅忔墜鎾哥殑涓涓畯錛屽彲浠ュ湪Tinymoe鐨勪唬鐮侀噷鐪嬪埌銆備負(fù)浜?jiǎn)妫鏌ユ垜浠湁娌℃湁綺楀績(jī)澶ф剰錛屾垜浠湁蹇呰媯(gè)鏌ヨ瘝娉曞垎鏋愬櫒鐨勪換浣曚竴涓緭鍑虹殑鏁版嵁錛岃濡傛瘡涓琛屾湁澶氬皯token錛岃濡傛瘡涓涓猼oken鐨勮鍙峰垪濂藉唴瀹瑰拰綾誨瀷銆傛垜涓轟簡(jiǎn)璁╄繖浜涙灟鐕ョ殑嫻嬭瘯鐢ㄤ緥瀹規(guī)槗鐪嬫噦錛屽湪榪欎釜鏂囦歡錛?a 銆? </p><p> 聽</p><p>絎簩涓祴璇曠敤渚嬮拡瀵圭殑鏄暣鏁板拰嫻偣鐨勮緭鍑哄拰鎶ラ敊涓婏紝閲嶇偣鍦ㄤ簬媯(gè)鏌ユ瘡涓涓猼oken鐨勫垪鍙鋒槸涓嶆槸姝g‘鐨勮綆椾簡(jiǎn)鍑烘潵錛? </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh10.png" alt=""/> </p><p> 聽</p><p>絎笁涓祴璇曠敤渚嬬殑閲嶇偣涓昏鏄?絎﹀彿鍜屸旀敞閲婄殑鍒嗘瀽錛? </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh11.png" alt=""/> </p><p> 聽</p><p>絎洓涓祴璇曠敤渚嬪垯鏄祴璇曞瓧絎︿覆鐨別scaping鍜屽湪闈㈠鎹㈣鐨勬椂鍊欐槸鍚︽紜殑澶勭悊錛堜箣鍓嶆彁鍒板瓧絎︿覆涓嶈兘鎹㈣錛岄亣鍒頒竴涓獊鐒剁殑鎹㈣灝嗕細(xì)琚湅鎴愮己灝戝弻寮曞彿錛夛細(xì) </p><p><img src="http://www.shnenglu.com/images/cppblog_com/vczh/030214_1544_vczh12.png" alt=""/> </p><p> 聽</p><p>閴翠簬璇嶆硶鍒嗘瀽鏈潵鍐呭涔熶笉澶氾紝鎵浠ヨ繖綃囨枃绔犱篃涓嶄細(xì)澶暱銆傜浉淇℃湁鍓嶉旂殑紼嬪簭鍛樹篃浼?xì)鍦q欓噷寰楀埌涓浜涚紪璇戝師鐞嗕互澶栫殑鐭ヨ瘑銆備笅涓綃囨枃绔犲皢浼?xì)鎻彉q癟inymoe鐨勫嚱鏁板ご鐨勮娉曞垎鏋愰儴鍒嗭紝灝嗕細(xì)鎻忚堪涓涓紪璇戝櫒鐨勪笉甯︽涔夌殑璇硶鍒嗘瀽鏄浣曚漢鑲夊嚭鏉ョ殑銆傛暚璇鋒湡寰呫?/p><img src ="http://www.shnenglu.com/vczh/aggbug/206014.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/vczh/" target="_blank">闄堟鐎?vczh)</a> 2014-03-02 23:44 <a href="http://www.shnenglu.com/vczh/archive/2014/03/02/206014.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>闅忔墜鎾鎬簡(jiǎn)涓涓彲浠ュ啓閫掑綊lambda鐨刌鍑芥暟http://www.shnenglu.com/vczh/archive/2014/03/01/205998.html闄堟鐎?vczh)闄堟鐎?vczh)Fri, 28 Feb 2014 16:34:00 GMThttp://www.shnenglu.com/vczh/archive/2014/03/01/205998.htmlhttp://www.shnenglu.com/vczh/comments/205998.htmlhttp://www.shnenglu.com/vczh/archive/2014/03/01/205998.html#Feedback3http://www.shnenglu.com/vczh/comments/commentRss/205998.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/205998.html鏈榪戝涔?fàn)C++11鐨剉ariadic template argument錛岀粓浜庡彲浠ユ憜鑴辯敤fpmacro妯℃澘鏉ュ鍒朵竴澶у爢浠g爜鐨勫仛娉曚簡(jiǎn)錛屽ソ寮蹇?jī)銆傝繖涓緥瀛愮殑main鍑芥暟鐢╨ambda鍐欎簡(jiǎn)涓涓枑娉㈤偅濂戞暟鍒楃殑閫掑綊璁$畻鍑芥暟銆傝窡浠ュ線涓嶅悓鐨勬槸錛屽湪Y鍑芥暟鐨勫府鍔╀笅錛岃繖涓猯ambda琛ㄨ揪鏄彲浠ユ垚鍔熺湅鍒拌嚜宸憋紝鐒跺悗閫掑綊璋冪敤銆傚綋鐒惰繖浠嶇劧闇瑕佺敤鏅氱殑C++閫掑綊鏉ュ疄鐜幫紝騫朵笉鏄?calculus閭d釜楂樺ぇ涓婄殑Y Combinator銆?

#include <functional>

#include <memory>

#include <iostream>

#include <string>

using namespace std;

template<typename TResult, typename ...TArgs>

class YBuilder

{

private:

聽聽聽聽function<TResult(function<TResult(TArgs...)>, TArgs...)> partialLambda;

public:

聽聽聽聽YBuilder(function<TResult(function<TResult(TArgs...)>, TArgs...)> _partialLambda)

聽聽聽聽聽聽聽聽:partialLambda(_partialLambda)

聽聽聽聽{

聽聽聽聽}

聽聽聽聽TResult operator()(TArgs ...args)const

聽聽聽聽{

聽聽聽聽聽聽聽聽return partialLambda(

聽聽聽聽聽聽聽聽聽聽聽聽[this](TArgs ...args)

聽聽聽聽聽聽聽聽聽聽聽聽{

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return this->operator()(args...);

聽聽聽聽聽聽聽聽聽聽聽聽}, args...);

聽聽聽聽}

};

template<typename TMethod>

struct PartialLambdaTypeRetriver

{

聽聽聽聽typedef void FunctionType;

聽聽聽聽typedef void LambdaType;

聽聽聽聽typedef void YBuilderType;

};

template<typename TClass, typename TResult, typename ...TArgs>

struct PartialLambdaTypeRetriver<TResult(__thiscall TClass::*)(function<TResult(TArgs...)>, TArgs...)>

{

聽聽聽聽typedef TResult FunctionType(TArgs...);

聽聽聽聽typedef TResult LambdaType(function<TResult(TArgs...)>, TArgs...);

聽聽聽聽typedef YBuilder<TResult, TArgs...> YBuilderType;

};

template<typename TClass, typename TResult, typename ...TArgs>

struct PartialLambdaTypeRetriver<TResult(__thiscall TClass::*)(function<TResult(TArgs...)>, TArgs...)const>

{

聽聽聽聽typedef TResult FunctionType(TArgs...);

聽聽聽聽typedef TResult LambdaType(function<TResult(TArgs...)>, TArgs...);

聽聽聽聽typedef YBuilder<TResult, TArgs...> YBuilderType;

};

template<typename TLambda>

function<typename PartialLambdaTypeRetriver<decltype(&TLambda::operator())>::FunctionType> Y(TLambda partialLambda)

{

聽聽聽聽return typename PartialLambdaTypeRetriver<decltype(&TLambda::operator())>::YBuilderType(partialLambda);

}

int _tmain(int argc, _TCHAR* argv[])

{

聽聽聽聽auto fib = Y([](function<int(int)> self, int index)

聽聽聽聽{

聽聽聽聽聽聽聽聽return index<2

聽聽聽聽聽聽聽聽聽聽聽聽?1

聽聽聽聽聽聽聽聽聽聽聽聽:self(index-1)+self(index-2);

聽聽聽聽});

聽聽聽聽for (int i = 0; i < 10; i++)

聽聽聽聽{

聽聽聽聽聽聽聽聽cout << fib(i) << " ";

聽聽聽聽}

聽聽聽聽cout << endl;

}



闄堟鐎?vczh) 2014-03-01 00:34 鍙戣〃璇勮
]]>
璺焩czh鐪嬪疄渚嬪緙栬瘧鍘熺悊鈥斺斾竴錛歍inymoe鐨勮璁″摬瀛?/title><link>http://www.shnenglu.com/vczh/archive/2014/02/11/205702.html</link><dc:creator>闄堟鐎?vczh)</dc:creator><author>闄堟鐎?vczh)</author><pubDate>Tue, 11 Feb 2014 04:53:00 GMT</pubDate><guid>http://www.shnenglu.com/vczh/archive/2014/02/11/205702.html</guid><wfw:comment>http://www.shnenglu.com/vczh/comments/205702.html</wfw:comment><comments>http://www.shnenglu.com/vczh/archive/2014/02/11/205702.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.shnenglu.com/vczh/comments/commentRss/205702.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/vczh/services/trackbacks/205702.html</trackback:ping><description><![CDATA[<p>鑷粠銆婂簭銆嬭儭鎵簡(jiǎn)蹇竴涓湀涔嬪悗錛岀粓浜庤繋鏉ヤ簡(jiǎn)姝g墖銆備箣鎵浠ョ郴鍒楁枃绔犲彨銆婄湅瀹炰緥瀛︾紪璇戝師鐞嗐嬶紝鏄洜涓烘暣涓郴鍒椾細(xì)閫氳繃甯﹀ぇ瀹朵竴姝ヤ竴姝ュ疄鐜癟inymoe鐨勮繃紼嬶紝鏉ヤ粙緇嶇紪璇戝師鐞嗙殑涓浜涚煡璇嗙偣銆? </p><p>  </p><p>浣嗘槸絎竴涓郴鍒楄繕娌″埌寮濮嬪鐞員inymoe婧愪唬鐮佺殑鏃跺欙紝棣栧厛鐨勮窡澶у璁蹭竴璁叉垜璁捐Tinymoe鐨勬晠浜嬨備負(fù)浠涔堣繖縐嶄笢瑗胯絳夊埌鐜板湪鎵嶈鍛紝鍥犱負(fù)涔嬪墠娌℃湁鏂囨。錛屽皢浜?jiǎn)涔熸槸鐧借鍟娿俆inymoe鍦╣ithub鐨剋iki鍒嗕負(fù)涓ら儴鍒嗭紝涓閮ㄥ垎鏄粙緇嶈娉曠殑錛屽彟涓閮ㄥ垎鏄粙緇嶄竴涓渶灝忕殑鏍囧噯搴撴槸濡備綍瀹炵幇鍑烘潵鐨勶紝鍦板潃鍦?<a >https://github.com/vczh/tinymoe/wiki</a> 涓嶅甫闂彿鐨勯偅浜涢兘鏄啓瀹屼簡(jiǎn)鐨勩? </p><p style="text-align: justify"><h2>緋誨垪鏂囩珷鐨勭洰鏍? </h2></p><p>鍦ㄤ粙緇峊inymoe涔嬪墠錛屽厛璇翠竴涓嬭繖涓郴鍒楁枃绔犵殑鐩爣銆侷deally錛屽彧瑕佷竴涓漢鐪嬪畬浜?jiǎn)杩欎釜绯诲垪锛屼粬灏卞彲浠ュ湪涓嬮潰杩欎簺鍦版柟寰楀?strong>鍏ラ棬</strong>錛? </p><ul><li><div style="text-align: justify"><span style="font-size:10pt">璇嶆硶鍒嗘瀽 </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">姝т箟涓庝笉姝т箟鐨勮娉曞垎鏋? </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">璇箟鍒嗘瀽 </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">絎﹀彿琛? </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">鍏ㄦ枃CPS鍙樻崲 </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">緙栬瘧鐢熸垚楂樻晥鐨勫叾浠栬璦鐨勪唬鐮? </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">緙栬瘧鐢熸垚鑷繁鐨勬寚浠ら泦 </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">甯C鐨勮櫄鎷熸満 </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">綾誨瀷鎺ㄥ錛坕ntersection type錛寀nion type錛宑oncept mapping錛? </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt">璺ㄨ繃紼嬪垎鏋愶紙inter-procedural analyzing錛? </span></div></li></ul><p>  </p><p>褰撶劧錛岃繖騫朵笉鑳借浣犳垚涓轟竴涓ぇ鐗涳紝浣嗘槸鑷沖皯鑷繁鍋氬仛瀹為獙錛屾悶涓鐐歸珮澶т笂鐨勪笢瑗塊獥甯堝浠槸娌℃湁闂浜?jiǎn)銆? </p><p style="text-align: justify"><h2>Tinymoe璁捐鐨勭洰鏍? </h2></p><p>铏界劧鎯蟲硶寰堝騫村墠灝卞凡緇忔湁浜?jiǎn)锛屼絾鏄瘶q欐鎴戞兂鎶婂畠瀹炵幇鍑烘潵錛屾槸涓轟簡(jiǎn)瀹屾垚銆婂浣曡璁′竴闂ㄨ璦銆嬬殑鍚庣畫銆傚厜璁插ぇ閬撶悊鏄病鏈夋剰涔夌殑錛岃嚦灝戝緱鏈変竴涓緥瀛愶紝璁╁ぇ瀹剁煡閬撹繖浜涗簨鎯呭埌搴曟槸浠涔堟牱瀛愮殑銆傚洜姝inymoe鏈変竴鐐規(guī)暀瀛︾殑鎰忎箟錛屼笉綆℃槸浣跨敤瀹冭繕鏄疄鐜板畠銆? </p><p>  </p><p>棣栧厛錛?strong>澶勭悊Tinymoe闇瑕佺殑鐭ヨ瘑鐐瑰錛岀敤浜庣紪璇戝師鐞嗘暀瀛?/strong>銆傛棦鐒舵槸涓轟簡(jiǎn)灞曠ず緙栬瘧鍘熺悊鐨勫熀紜鐭ヨ瘑錛屽洜姝よ璦鏈韓涓嶅彲鑳芥槸閭g鐑傚ぇ琛楃殑C緋誨垪鐨勪笢瑗褲傚綋鐒墮櫎浜?jiǎn)鐭ヨ瘑鐐逛互澶栧Q岃繕浼?xì)璁╁ぇ瀹舵繁鍒荤殑鐞嗚В鍒板Q?strong>闅懼疄鐜板拰闅劇敤錛屾槸瀹屽叏娌℃湁鍏崇郴鐨?/strong>錛乀inymoe鐢ㄨ搗鏉ュ彲鐖戒簡(jiǎn)錛屽晩鍝堝搱鍝堝搱鍝堛? </p><p>  </p><p>鍏舵錛?strong>Tinymoe瀹規(guī)槗宓屽叆鍏朵粬璇█鐨勭▼搴忥紝浣滀負(fù)DSL浣跨敤錛屽彲浠ヨ皟鐢ㄥ涓葷▼搴忔彁渚涚殑鍔熻兘</strong>銆傝繖涓ユ牸鐨勬潵璁蹭笉綆楄璦鏈韓鐨勫姛鑳斤紝鑰屾槸瀹炵幇鏈韓鐨勫姛鑳姐傚氨綆楁槸C++涔熷彲浠ヨ璁′負(fù)宓屽叆寮忥紝lua涔熷彲浠ヨ璁捐涓虹紪璇戞垚exe鐨勩備竴涓璦鏈韓鐨勮璁″茍涓嶄細(xì)瀵瑰浣曚嬌鐢ㄥ畠鏈夊澶х殑闄愬埗銆備負(fù)浜?jiǎn)璁╁ぇ瀹剁湅浜?jiǎn)榪欎釜緋誨垪涔嬪悗錛屽彲浠ュ啓鍑?guó)檱碁畱鍙敤鐨勪笢瑗垮Q岃屼笉浠呬粎鏄啓鐜╁叿錛屽洜姝よ繖涔熸槸璁捐鐨勭洰鏍囦箣涓銆? </p><p>  </p><p>絎笁錛?strong>Tinymoe璇硶浼樺寲浜庢弿榪板鏉傜殑閫昏緫</strong>錛岃屼笉鏄紭鍖栦笌澶嶆潅鐨勬暟鎹粨鏋勫拰綆楁硶錛堣櫧鐒朵篃鍙互錛夈俆inymoe鏈韓鏄笉瀛樺湪浠諱綍緇嗙矑搴︽帶鍒跺唴瀛樼殑鑳藉姏鐨勶紝鑰屼笖铏界劧鍙互瀹炵幇澶嶆潅鐨勬暟鎹粨鏋勫拰綆楁硶錛屼絾鏄湰韜弿榪拌繖浜涗笢瑗挎渶澶氫篃灝辮窡JavaScript涓鏍峰鏄撯斺斿叾瀹炲氨鏄笉瀹規(guī)槗銆備絾鏄疶inymoe璁捐鐨勬椂鍊欙紝鏄負(fù)浜?jiǎn)璁╁ぇ瀹舵妸Tinymoe褰撴垚鏄竴闂ㄥ彲浠ヨ璁SL鐨勮璦錛屽洜姝ゅ澶嶆潅閫昏緫鐨勬弿榪拌兘鍔涚壒鍒己銆傚敮涓鐨勫墠鎻愬氨鏄紝浣犳噦寰楀浣曠粰Tinymoe鍐欏簱銆傚緢濂界殑浣跨敤鍜屽緢濂藉湴瀹炵幇涓涓笢瑗挎槸鐩歌緟鐩告垚鐨勩傛垜鍦ㄨ璁inymoe涔嬪垵錛屽緢澶歱attern鎴戜篃涓嶇煡閬擄紝鍙槸鍥犱負(fù)璁捐Tinymoe閬靛驚浜?jiǎn)绉戝鐨勬栆?guī)硶錛屽洜姝ゆ渶鍚庢垜鍙戠幇Tinymoe绔熺劧鍏鋒湁濡傛寮哄ぇ鐨勬弿榪拌兘鍔涖傚綋鐒跺浜庤鑰呬滑鏈韓錛屼篃浼?xì)鍦ㄩ槄璇痪p誨垪鏂囩珷鐨勬湁綾諱技鐨勬劅瑙夈? </p><p>  </p><p>鏈鍚庯紝<strong>Tinymoe鏄竴涓姩鎬佺被鍨嬭璦</strong>銆傝繖綰補(bǔ)鏄垜鐨勪釜浜虹埍濂戒簡(jiǎn)銆傚涓闂ㄥ姩鎬佺被鍨嬭璦鍋氶潤(rùn)鎬佸垎鏋愰偅璇ュ鏈夎叮鍟婏紝鍟婂搱鍝堝搱鍝堝搱鍝堛? </p><p style="text-align: justify"><h2>Tinymoe鐨勮璁″摬瀛? </h2></p><p>褰撶劧鎴戝茍涓嶄細(xì)涓轟簡(jiǎn)鍐欐枃绔犲氨鏃犵嚎鎻愰珮Tinymoe鐨勫疄鐜伴毦搴︾殑銆備負(fù)浜?jiǎn)鎶婁粬鎺у埗鍦ㄤ竴涓甯告按騫籌紝鍥犳璁捐Tinymoe鐨勭涓鏉″氨鏄細(xì) </p><p>  </p><p><strong>涓銆佸皬瑙勬ā鐨勮璦鏍稿績(jī)+澶ц妯$殑鏍囧噯搴? </strong></p><p>  </p><p>鍏跺疄榪欒窡C++宸笉澶氥備絾鏄疌++鐢變簬鎯沖仛鐨勪簨鎯呭疄鍦ㄦ槸澶浜?jiǎn)锛岃濡傝瑙嗗洃謱呮秹|墍鏈夎寖寮忕瓑絳夛紝鍥犳灝辯畻榪欎箞鍋氾紝浠嶇劧璁〤++鏈韓鍖呭惈鐨勪笢瑗胯繃浜庡法澶э紙鍏跺疄鎴戣繕鏄寰桟++涓嶉毦鎬庝箞鍔烇級(jí)銆? </p><p>  </p><p>璇█鏍稿績(jī)?yōu)畯锛屽疄鐜拌典h潵褰撶劧瀹規(guī)槗銆?strong>浣嗘槸浣犲茍涓嶈兘涓轟簡(jiǎn)璁╄璦鏍稿績(jī)?yōu)畯灏辩壓鐗蹭粈涔堝姛鑳?/strong>銆傚洜姝ょ簿蹇?jī)璁捐涓涓牳蹇?jī)鏄繀椤荤殑锛屽洜湄?fù)鎵鏈変綘鎯寵浣嗘槸涓嶆兂鍔犲叆璇█鐨勫姛鑳斤紝浠庢灝卞彲浠ョ敤搴撴潵瀹炵幇浜?jiǎn)銆? </p><p>  </p><p>璀璇達(dá)紝Tinymoe閫氳繃鏈夋潯浠跺湴鏆撮湶continuation錛岃姹傜紪璇戝櫒鍦ㄧ紪璇慣inymoe鐨勬椂鍊欏仛涓嬈″叏鏂嘋PS鍙樻崲銆傝繖涓笢瑗胯瀹規(guī)槗涔熶笉鏄偅涔堝鏄擄紝浣嗘槸鑷沖皯姣斾綘鍋氬垎鏀驚鐜紓甯稿鐞嗕粈涔堢殑鍏ㄩ儴鍔犺搗鏉ヨ綆鍗曞浜?jiǎn)鍚с傛墍浠ユ垜鍙彁渚沜ontinuation錛屽墿涓嬬殑鎺у埗嫻佸叏閮ㄧ敤搴撴潵鍋氥傝繖鏍鋒湁涓変釜濂藉錛? </p><ol><li><div style="text-align: justify"><span style="font-size:10pt"><strong>璇█綆鍗曪紝瀹炵幇闅懼害闄嶄綆</strong>銆? </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt"><strong>涓轟簡(jiǎn)璁╁簱鍙互鍙戞尌搴旀湁鐨勪綔鐢紝璇█鐨勫姛鑳界殑閫夋嫨鍗佸垎鐨勬浜ゅ寲</strong>銆備笉榪囪繖浠嶇劧鍦ㄤ竴瀹氱殑紼嬪害涓婃彁楂樹簡(jiǎn)瀛︿範(fàn)鐨勯毦搴︺備絾鏄茍涓嶆槸鎵鏈変漢閮介渶瑕佸啓搴撳鍚э紝寰堝浜哄彧闇瑕佷細(xì)鐢ㄥ簱灝卞浜?jiǎn)銆傞氳繃涓鐐圭偣鐨勭壓鐗詫紝姝d氦鍖栧彲浠ュ厖鍒嗗彂鎸ョ▼搴忓憳鐨勬兂璞¤兘鍔涖傝繖瀵逛簬浠SL涓虹洰鐨勭殑璇█鏉ヨ鏄笉鍙垨緙虹殑銆? </span></div></li><li><div style="text-align: justify"><span style="font-size:10pt"><strong>鏍囧噯搴撴湰韜彲浠ヤ綔涓虹紪璇戝櫒鐨勬祴璇曠敤渚?/strong>銆備綘鍙渶瑕佸噯澶囪凍澶熷鐨勬祴璇曠敤渚嬫潵榪愯鏍囧噯搴擄紝閭d箞浣犲彧瑕佺敤C++錛堝亣璁句綘鐢–++鏉ュ疄鐜癟inymoe錛夋潵璺戜粬浠紝閭f墍鏈夌殑鏍囧噯搴撻兘浼?xì)寰楀埌杩愯銆傝繍琛岀粨鏋滃鏋滃錛岄偅浣犲緙栬瘧鍣ㄧ殑瀹炵幇涔熷氨鏈変俊蹇?jī)浜?jiǎn)銆備負(fù)浠涔堝憿錛屽洜涓烘爣鍑嗗簱澶ч噺鐨勪嬌鐢ㄤ簡(jiǎn)璇█鐨勫悇縐嶅姛鑳斤紝鑰屼笖鏄棤鑺傛搷鐨勪嬌鐢ㄣ傚鏋滆繖鏍烽兘鑳借繃錛岄偅鏅氱殑紼嬪簭灝辨洿鑳借繃浜?jiǎn)銆? </span></div></li></ol><p>  </p><p>璇翠簡(jiǎn)榪欎箞澶氾紝閭e埌搴曚粈涔堟槸灝忚妯$殑璇█鏍稿績(jī)鍛紵榪欏湪Tinymoe涓婃湁涓ょ偣浣撶幇銆? </p><p>  </p><p>絎竴鐐癸紝灝辨槸<strong>Tinymoe鐨勮娉曞厓绱犲皯</strong>銆備竴涓猅inymoe琛ㄨ揪寮忔棤闈炲氨鍙湁涓夌被錛氬嚱鏁拌皟鐢ㄣ佸瓧闈㈤噺鍜屽彉閲忋佹搷浣滅銆傚瓧闈㈤噺灝辨槸閭d簺鏁板瓧瀛楃涓蹭粈涔堢殑銆傚綋Tinymoe鐨勫嚱鏁扮殑鏌愪竴涓弬鏁版寚瀹氫負(fù)涓嶅畾涓暟鐨勬椂鍊欎綘榪樺緱鎻愪緵涓涓猼uple銆傚鎵橈紙鍦ㄨ繖閲屾槸鍑芥暟鎸囬拡鍜岄棴鍖呯殑緇熺О錛夊拰鏁扮粍铏界劧涔熸槸Tinymoe鐨勫師鐢熷姛鑳戒箣涓錛屼絾鏄浠栦滑鐨勬搷浣滈兘鏄氳繃鍑芥暟璋冪敤鏉ュ疄鐜扮殑錛屾病鏈夌壒孌婄殑璇硶銆? </p><p>  </p><p>綆鍗曞湴璁詫紝灝辨槸闄や簡(jiǎn)涓嬮潰榪欎簺涓滆タ浠ュ浣犱笉浼?xì)瑙佸埌鍒殑绉嵕c葷殑琛ㄨ揪寮忎簡(jiǎn)錛? </p><p style="text-align: justify"><span style="font-size:10pt">1 </span></p><p style="text-align: justify"><span style="font-size:10pt">"text" </span></p><p style="text-align: justify"><span style="font-size:10pt">sum from 1 to 100 </span></p><p style="text-align: justify"><span style="font-size:10pt">sum of (1, 2, 3, 4, 5) </span></p><p style="text-align: justify"><span style="font-size:10pt">(1+2)*(3+4) </span></p><p style="text-align: justify"><span style="font-size:10pt">true </span></p><p>  </p><p>涓涓猅inymoe璇彞鐨勭綾誨氨鏇村皯浜?jiǎn)锛岃涔堟槸涓涓嚱鏁拌皟鐢紝瑕佷箞鏄痓lock錛岃涔堟槸榪炲湪涓璧風(fēng)殑鍑犱釜block錛? </p><p style="text-align: justify"><span style="font-size:10pt">do something bad </span></p><p style="text-align: justify">  </p><p style="text-align: justify"><span style="font-size:10pt">repeat with x from 1 to 100 </span></p><p style="text-align: justify"><span style="font-size:10pt">    do something bad with x </span></p><p style="text-align: justify"><span style="font-size:10pt">end </span></p><p style="text-align: justify">  </p><p style="text-align: justify"><span style="font-size:10pt">try </span></p><p style="text-align: justify"><span style="font-size:10pt">    do something bad </span></p><p style="text-align: justify"><span style="font-size:10pt">catch exception </span></p><p style="text-align: justify"><span style="font-size:10pt">    do something worse </span></p><p style="text-align: justify"><span style="font-size:10pt">end </span></p><p>  </p><p>鏈変漢鍙兘浼?xì)璇村Q岄偅repeat鍜宼ry-catch灝變笉鏄娉曞厓绱犲悧錛熻繖涓湡涓嶆槸錛屼粬浠槸鏍囧噯搴撳畾涔夊ソ鐨勫嚱鏁幫紝璺熶綘鑷繁澹版槑鐨勫嚱鏁版病鏈変換浣曠壒孌婄殑鍦版柟銆? </p><p>  </p><p>榪欓噷鍏跺疄榪樻湁涓涓湁鎰忔濈殑鍦版柟錛?repeat with x from 1 to 100"鐨剎鍏跺疄鏄驚鐜綋鐨勫弬鏁般俆inymoe鏄浣曠粰浣犺嚜瀹氫箟鐨刡lock寮媧炵殑鍛紵涓嶄粎濡傛錛孴inymoe鐨勫嚱鏁拌繕鍙互澹版槑"寮曠敤鍙傛暟"錛屼篃灝辨槸璇磋皟鐢ㄨ繖涓嚱鏁扮殑鏃跺欎綘鍙兘鎶婁竴涓彉閲忔斁榪涘幓錛屽嚱鏁伴噷闈㈠彲浠ヨ鍐欒繖涓彉閲忋傝繖浜涢兘鏄庝箞瀹炵幇鐨勫憿錛熷涓嬪幓灝辯煡閬撲簡(jiǎn)錛屽晩鍝堝搱鍝堝搱銆? </p><p>  </p><p>Tinymoe鐨勫0鏄庝篃鍙湁涓ょ錛岀涓縐嶆槸鍑芥暟錛岀浜岀鏄鍙楓傚嚱鏁扮殑澹版槑鍙兘浼?xì)鐣ュ井澶嶆潅涓鐐癸紝涓嶈繃闄や簡(jiǎn)鍑芥暟澶翠互澶栵紝鍏朵粬鐨勯兘鏄被浼奸厤緗竴鏍風(fēng)殑涓滆タ錛屽嚑涔庨兘鏄敤鏉ュ畾涔?catch鍑芥暟鍦ㄤ嬌鐢ㄧ殑鏃跺欏繀欏繪槸榪炲湪try鍑芥暟鍚庨潰"鍟婏紝"break鍙兘鍦╮epeat閲岄潰鐢?鍟婏紝璇稿姝ょ被鐨勪俊鎭? </p><p>  </p><p>Tinymoe鐨勭鍙峰崄鍒嗙畝鍗曪紝璀璇翠綘瑕佸畾涔変竴騫村洓瀛g殑絎﹀彿錛屽彧闇瑕佽繖涔堝啓錛? </p><p style="text-align: justify"><span style="font-size:10pt">symbol spring </span></p><p style="text-align: justify"><span style="font-size:10pt">symbol summer </span></p><p style="text-align: justify"><span style="font-size:10pt">symbol autumn </span></p><p style="text-align: justify"><span style="font-size:10pt">symbol winter </span></p><p>  </p><p>symbol鏄竴涓?涓庝紬涓嶅悓鐨勫?錛屼篃灝辨槸璇翠綘鍦ㄤ袱涓猰odule涓嬮潰瀹氫箟鍚屽悕鐨剆ymbol浠栦滑涔熸槸涓嶄竴鏍風(fēng)殑銆傛墍鏈塻ymbol涔嬮棿閮芥槸涓嶄竴鏍風(fēng)殑錛屽彲浠ョ敤=鍜?lt;>鏉ュ垽鏂俿ymbol灝辨槸闈?涓嶄竴鏍?鏉ュ畾涔夊叾鑷韓鐨勩? </p><p>  </p><p>鑷充簬璇達(dá)紝閭d負(fù)浠涔堜笉鐢╡num鍛紵鍥犱負(fù)Tinymoe鏄姩鎬佺被鍨嬭璦錛宔num鐨勭被鍨嬫湰韜槸鏍規(guī)湰娌℃湁鐢ㄦ涔嬪湴鐨勶紝鎵浠ュ共鑴嗗氨璁捐鎴愪簡(jiǎn)symbol銆? </p><p>  </p><p>絎簩鐐癸紝<strong>Tinymoe闄や簡(jiǎn)continuation鍜宻elect-case浠ュ錛屾病鏈夊叾浠栧師鐢熺殑鎺у埗嫻佹敮鎸?/strong>銆? </p><p>  </p><p>榪欏熀鏈笂褰掑姛浜庡厛杈堝彂鏄巆ontinuation passing style transformation鐨勫姛鍔籌紝緇嗚妭鍦ㄤ互鍚庣殑緋誨垪閲岄潰浼?xì)璁层傚績(jī)鎬ョ殑浜哄彲浠ュ厛鐪?<a >https://github.com/vczh/tinymoe/blob/master/Development/Library/StandardLibrary.txt</a> 銆傝繖涓枃浠舵殏鏃跺寘鍚簡(jiǎn)Tinymoe鐨勬暣涓爣鍑嗗簱錛岄噷闈㈠畾涔変簡(jiǎn)寰堝if-else/repeat/try-catch-finally絳夋帶鍒舵祦錛岀敋鑷寵繛coroutine閮藉彲浠ョ敤continuation銆乻elect-case鍜岄掑綊鏉ュ仛銆? </p><p>  </p><p>榪欎篃鏄?strong>灝忚妯$殑璇█鏍稿績(jī)+澶ц妯$殑鏍囧噯搴?/strong>鎵瑕佽〃杈劇殑鎰忔濄傚鏋滃彲浠ユ彁渚涗竴涓猣eature A錛岄氳繃浠栨潵瀹屾垚鍏朵粬蹇呰鐨刦eature B0, B1, B2…鐨勫悓鏃訛紝灝嗘潵璇翠笉瀹氳繕鏈変漢鍙互鍑轟簬鑷繁鐨勯渶姹傦紝寮鍙慏SL鐨勬椂鍊欏畾涔塮eature C錛岄偅涔堝彧鏈堿闇瑕佷繚鐣欎笅鏉ワ紝鎵鏈夌殑B鍜孋閮藉皢浣跨敤搴撶殑鏂規(guī)硶鏉ュ疄鐜般? </p><p>  </p><p>榪欎箞鍋氬茍涓嶆槸瀹屽叏鏈夌泭鏃犲鐨勶紝鍙槸鍧忓寰堝皬錛屽湪"Tinymoe鐨勫疄鐜伴毦鐐?閲岄潰浼?xì)璇l嗚鏄庛?strong> </strong></p><p>  </p><p><strong>浜屻佹墿灞曞悗鐨勪笢瑗胯窡鍘熺敓鐨勪笢瑗垮瑙備竴鑷? </strong></p><p>  </p><p>榪欐槸寰堥噸瑕佺殑銆傚鏋滄墿灞曞嚭鏉ョ殑涓滆タ璺熷師鐢熺殑涓滆タ闀垮緱涓嶄竴鏍鳳紝鐢ㄨ搗鏉ュ氨瑙夊緱寰堝偦閫箋侸ava鐨剆tring涓嶈兘鐢?=鏉ュ垽鏂唴瀹瑰氨鏄繖鏍風(fēng)殑涓涓緥瀛愩傝櫧鐒朵粬浠湁鐨勬槸鐞嗙敱璇佹槑==鐨勫弽鐩磋璁捐鏄鐨勨斺斾絾鏄弽鐩磋灝辨槸鍙嶇洿瑙夛紝灝辨槸涓涓ぇ鍧戙? </p><p>  </p><p>榪欑渚嬪瓙榪樻湁寰堝錛岃濡傝go鐨勬暟緇勫拰琛ㄧ殑綾誨瀷鍟︼紝go鏈韓濡傛灉涓嶈鏁扮粍鍜岃〃鐨勮瘽錛屾槸鍐欎笉鍑洪暱寰楄窡鍘熺敓鏁扮粍鍜岃〃涓鏍風(fēng)殑鏁扮粍鍜岃〃鐨勩傚叾瀹炶繖涔熶笉鏄竴涓ぇ闂錛岄棶棰樻槸go緇欐暟緇勫拰琛ㄧ殑鏍峰瓙鎼炵壒孌婂寲錛岃繕鏈夐偅涓弽鐩磋鐨剆lice鐨勮祴鍊奸棶棰橈紙浼?xì)鍚堟硶婧㈠嚭锛佸Q夛紝綾諱技鐨勪笢瑗垮疄鍦ㄦ槸澶浜?jiǎn)銆備竴涓笢瑗跨壒渚嬪お澶氾紝鍧戝氨鏃犳硶閬垮厤銆傛墍浠ュ叾瀹炲湪鎴戠湅鏉ワ紝go榪樹笉濡傜粰C(jī)璇█鍔犱笂erlang鐨刟ctor鍔熻兘浜?jiǎn)浜嬨? </p><p>  </p><p>鍙嶈孋++鍦ㄨ繖浠朵簨鎯呬笂灝卞仛寰楀緢濂姐傚鏋滀綘瀵笴++涓嶇啛鎮(zhèn)夌殑璇濓紝鏈夋椂鍊欐牴鏈垎涓嶆竻浠涔堟槸緙栬瘧鍣ㄥ共鐨勶紝浠涔堟槸鏍囧噯搴撳共鐨勩傝濡傝static_cast鍜宒ynamic_cast闀垮緱鍍忎竴涓ā鏉垮嚱鏁幫紝鍥犳boost灝卞彲浠ョ敤綾諱技鐨勬墜娉曞姞鍏exical_cast鍜岄拡瀵箂hared_ptr鐨剆tatic_pointer_cast鍜宒ynamic_pointer_cast錛屾暣涓爣鍑嗗簱鍜岃璦鏈韓嫻戠劧涓浣撱傝繖鏍峰瓙鍋氱殑濂藉鏄紝褰撲綘鍦ㄥ煿鍏誨璇█鏈韓鐨勭洿瑙夌殑鏃跺欙紝浣犱篃鍦ㄥ煿鍏誨鏍囧噯搴撶殑鐩磋錛屽煿鍏葷洿瑙夎繖浠朵簨鎯呬綘涓嶇敤鍋氫袱嬈°備綘瀵逛竴涓笢瑗跨殑鐩磋瓚婂噯錛屽涔?fàn)鏂颁笢瑗跨殑閫熷害灝辮秺蹇傛墍浠++鐨勮璁″垰濂藉彲浠ヨ浣犲湪鐔繃絎竴涓樁孌電殑瀛︿範(fàn)涔嬪悗錛屽悗闈㈤兘瑙夊緱鏃犳瘮鐨勮交鏉俱? </p><p>  </p><p>涓嶈繃鍏蜂綋鍒癟inymoe錛屽洜涓篢inymoe鏈韓鐨勮娉曞厓绱犲お灝戜簡(jiǎn)錛屾墍浠ヨ繖涓仛娉曞湪Tinymoe韜笂浣撶幇寰椾笉鏄庢樉銆? </p><p style="text-align: justify"><h2>Tinymoe鐨勫疄鐜伴毦鐐? </h2></p><p>棣栧厛錛?strong>璇硶鍒嗘瀽闇瑕佸Tinymoe紼嬪簭澶勭悊涓夐亶</strong>銆俆inymoe瀵逛簬璇彞璁捐浣垮緱瀵逛竴涓猅inymoe紼嬪簭鍋氳娉曞垎鏋愪笉鏄偅涔堢洿鎺ワ紙铏界劧姣擟++浠涔堢殑榪樻槸瀹規(guī)槗澶氫簡(jiǎn)錛夈備婦涓緥瀛愶細(xì) </p><p style="text-align: justify"><span style="font-size:10pt">module hello world </span></p><p style="text-align: justify">  </p><p style="text-align: justify"><span style="font-size:10pt">phrase sum from (lower bound) to (upper bound) </span></p><p style="text-align: justify"><span style="font-size:10pt">… </span></p><p style="text-align: justify"><span style="font-size:10pt">end </span></p><p style="text-align: justify">  </p><p style="text-align: justify"><span style="font-size:10pt">sentence print (message) </span></p><p style="text-align: justify"><span style="font-size:10pt">… </span></p><p style="text-align: justify"><span style="font-size:10pt">end </span></p><p style="text-align: justify">  </p><p style="text-align: justify"><span style="font-size:10pt">phrase main </span></p><p style="text-align: justify"><span style="font-size:10pt">    print sum from 1 to 100 </span></p><p style="text-align: justify"><span style="font-size:10pt">end </span></p><p>  </p><p>絎竴閬嶅垎鏋愭槸璇嶆硶鍒嗘瀽錛岃繖涓椂鍊欏緱鎶婃瘡涓涓猼oken鐨勮鍙瘋浣忋傜浜岄亶鍒嗘瀽鏄笉甯︽涔夌殑璇硶鍒嗘瀽錛岀洰鏍囨槸鎶婃墍鏈夌殑鍑芥暟澶存娊鍙栧嚭鏉ワ紝鐒跺悗緇勬垚涓涓叏灞絎﹀彿琛ㄣ傜涓夐亶鍒嗘瀽灝辨槸瀵瑰嚱鏁頒綋閲岄潰鐨勮鍙ュ仛甯︽涔夌殑璇硶鍒嗘瀽浜?jiǎn)銆傚洜涓篢inymoe鍏佽浣犲畾涔夊彉閲忥紝鎵浠ョ鍙瘋〃鑲畾鏄竴杈瑰垎鏋愪竴杈逛慨鏀圭殑銆備簬鏄浜?print sum from 1 to 100"榪欎竴鍙ワ紝濡傛灉浣犳病鏈夊彂鐜?phrase sum from (lower bound) to (upper bound)"鍜?sentence print (message)"錛岄偅鏍規(guī)湰鏃犱粠涓嬫墜銆? </p><p>  </p><p>榪樻湁鍙︿竴涓緥瀛愶細(xì) </p><p style="text-align: justify"><span style="font-size:10pt">module exception handling </span></p><p style="text-align: justify">  </p><p style="text-align: justify"><span style="font-size:10pt">… </span></p><p style="text-align: justify">  </p><p style="text-align: justify"><span style="font-size:10pt">phrase main </span></p><p style="text-align: justify"><span style="font-size:10pt">    try </span></p><p style="text-align: justify"><span style="font-size:10pt">        do something bad </span></p><p style="text-align: justify"><span style="font-size:10pt">    catch </span></p><p style="text-align: justify"><span style="font-size:10pt">        print "bad thing happened" </span></p><p style="text-align: justify"><span style="font-size:10pt">    end </span></p><p style="text-align: justify"><span style="font-size:10pt">end </span></p><p>  </p><p>褰撹娉曞垎鏋愬仛鍒?try"鐨勬椂鍊欙紝鍥犱負(fù)鍙戠幇瀛樺湪<strong>try鍑芥暟鐨勫畾涔?/strong>錛屾墍浠inymoe鐭ラ亾鎺ヤ笅鏉ョ殑"do something bad"灞炰簬璋冪敤try榪欎釜鍧楀嚱鏁版墍闇鎻愪緵鐨勪唬鐮佸潡閲岄潰鐨勪唬鐮併傛帴涓嬫潵鏄?catch"錛孴inymoe鎬庝箞鐭ラ亾catch鏄帴鍦╰ry鍚庨潰錛岃屼笉鏄斁鍦╰ry閲岄潰鐨勫憿錛熻繖浠嶇劧鏄敱浜?strong>catch鍑芥暟鐨勫畾涔?/strong>鍛婅瘔鎴戜滑鐨勩傚叧浜庤繖鏂歸潰鐨勮娉曠煡璇嗗彲浠?a >鐐瑰嚮榪欓噷鏌ョ湅</a>銆? </p><p>  </p><p>姝e洜涓哄姝わ紝鎴戜滑闇瑕侀鍏堢煡閬撳嚱鏁扮殑瀹氫箟錛岀劧鍚庢墠鑳藉垎鏋愬嚱鏁頒綋閲岄潰鐨勪唬鐮併傝櫧鐒惰繖鍦ㄤ竴瀹氱▼搴︿笂閫犳垚浜?jiǎn)Tinymoe鐨勮娉曞垎鏋愬鏉傚害鐨勬彁鍗囷紝浣嗘槸鍏跺鏉傚害鏈韓騫朵笉楂樸傛瘮C++綆鍗曞氨涓嶈浜?jiǎn)锛尀q畻鏄疌銆丆#鍜孞ava錛岀敱浜庡叾璇硶鍏冪礌澶錛屽鑷?strong>涓嶉渶瑕佸嬈″垎鏋?/strong>鎵闄嶄綆鐨勫鏉傚害琚畬鍏ㄧ殑鎶墊秷錛岀粨鏋滆窡瀹炵幇Tinymoe鐨勮娉曞垎鏋愬櫒鐨勯毦搴︿笉鐩鎬笂涓嬨? </p><p>  </p><p>鍏舵錛?strong>CPS鍙樻崲鍚庣殑浠g爜闇瑕佺壒孌婂鐞嗭紝鍚﹀垯鐩存帴鎵ц瀹規(guī)槗瀵艱嚧call stack縐瘡鐨勬病鐢ㄧ殑涓滆タ榪囧</strong>銆傚洜涓篢inymoe鍙互鑷畾涔夋搷浣滅錛屾墍浠ユ搷浣滅璺烠++涓鏍峰湪緙栬瘧鐨勬椂鍊欒杞崲鎴愪簡(jiǎn)鍑芥暟璋冪敤銆傛瘡涓涓嚱鏁拌皟鐢ㄩ兘鏄細(xì)琚獵PS鍙樻崲鐨勩傚敖綆℃瘡涓琛岀殑鍑芥暟璋冪敤嬈℃暟涓嶅錛屼絾鏄鏋滀綘鐨勭▼搴忔補(bǔ)寰幆錛?strong>寰幆鏄氳繃閫掑綊鏉ユ弿榪?/strong>錛堣屼笉鏄疄鐜幫紝鐢變簬CPS鍙樻崲鍚嶵inymoe鍋氫簡(jiǎn)浼樺寲錛屾墍浠ヤ笉瀛樺湪瀹為檯涓婄殑閫掑綊錛夌殑錛屽鏋滅洿鎺ユ墽琛孋PS鍙樻崲鍚庣殑浠g爜錛岀畻涓涓?鍔犲埌1000閮戒細(xì)瀵艱嚧stack overflow銆傚彲瑙佸叾call stack閲岄潰鍫嗙Н鐨刢losure鏁伴噺涔嬪法澶с? </p><p>  </p><p>鎴戝湪鍋歍inymoe浠g爜鐢熸垚鐨勫疄楠岀殑鏃跺欙紝涓轟簡(jiǎn)綆鍗曟垜鍦ㄥ崟鍏冩祴璇曢噷闈㈢洿鎺ヤ駭鐢熶簡(jiǎn)瀵瑰簲鐨凜#浠g爜銆備竴寮濮嬫病鏈夊鐞咰PS鑰岀洿鎺ヨ皟鐢紝紼嬪簭涓嶄粎鎱紝鑰屼笖瀹規(guī)槗stack overflow銆備絾鏄垜浠煡閬擄紙鍏跺疄浣犱滑浠ュ悗鎵嶄細(xì)鐭ラ亾錛夛紝CPS鍙樻崲鍚庣殑浠g爜閲岄潰鍑犱箮鎵鏈夌殑call stack欏歸兘鏄氮璐圭殑錛屽洜姝ゆ垜鎶婃暣涓湪鐢熸垚C#浠g爜鐨勬椂鍊欎慨鏀規(guī)垚錛屽鏋滈渶瑕佽皟鐢╟ontinuation錛屽氨榪斿洖<strong>璋冪敤continuation鐨勮鍙ョ粍鎴愮殑lambda琛ㄨ揪寮?/strong>錛屽湪鏈澶栧眰鐢ㄤ竴涓驚鐜幓椹卞姩浠栫洿鍒拌繑鍥瀗ull涓烘銆傝繖鏍峰仛浜?jiǎn)涔嬪悗锛尀q畻Tinymoe鐨勪唬鐮佹湁閫掑綊錛宑all stack閲岄潰涔熶笉浼?xì)鍥犱负閫掑綊鑰岀Н绱痗all stack item浜?jiǎn)銆備簬鏄敓鎴愮殑C#浠g爜鎵ц椋炲揩錛岃屼笖鏃犺浣犳庝箞閫掑綊涔熸案榪滀笉浼?xì)閫犳垚stack overflow浜?jiǎn)銆傝繖涓編濡欑殑鐗規(guī)у嚑涔庢墍鏈夎璦閮藉仛涓嶅埌錛屽晩鍝堝搱鍝堝搱鍝堛? </p><p>  </p><p>褰撶劧榪欎篃鏄湁浠d環(huán)鐨勶紝鍥犱負(fù)鏈川涓婃垜鍙槸鎶婁繚瀛樺湪stack涓婄殑context杞Щ鍒癶eap涓娿備笉榪囧浜忎簡(jiǎn).net 4.0鐨勫己澶х殑background GC錛岃繖鏍峰仛涓濇娌℃湁澶氫綑鐨勬ц兘涓婄殑鎹熻椼傚綋鐒惰繖涔熸剰鍛崇潃錛屼竴涓珮鎬ц兘鐨凾inymoe铏氭嫙鏈猴紝闇瑕佷竴涓墰閫肩殑鍨冨溇鏀墮泦鍣ㄤ綔涓洪潬灞便俢ontext浜х敓鐨刢losure鍦ㄥ嚱鏁頒綋鐪熺殑琚墽琛屽畬涔嬪悗灝變細(xì)琚緢蹇湴鏀墮泦錛屾墍浠PS鍔犱笂榪欑鍋氭硶騫朵笉浼?xì)瀵笹C浜х敓棰濆鐨勫帇鍔涳紝鎵鏈夌殑鍘嬪姏浠嶇劧鏉ユ簮浜庝綘鑷繁鎵鍒涘緩鐨勬暟鎹粨鏋勩? </p><p>  </p><p>絎笁錛?strong>Tinymoe闇瑕佸姩鎬佺被鍨嬭璦鐨勭被鍨嬫帹瀵?/strong>銆傚綋鐒朵綘涓嶈繖涔堝仛鑰屾妸Tinymoe鐨勭▼搴忓綋JavaScript閭f牱鐨勭▼搴忓鐞嗕篃娌℃湁闂銆備絾鏄垜浠煡閬擄紝姝f槸鍥犱負(fù)V8瀵笿avaScript鐨勪唬鐮佽繘琛屼簡(jiǎn)綾誨瀷鎺ㄥ錛屾墠浜х敓浜?jiǎn)閭d箞浼樺紓鐨勬ц兘銆傚洜姝よ繖綆楁槸涓涓紭鍖栦笂鐨勬帾鏂姐? </p><p>  </p><p>鏈鍚庯紝<strong>Tinymoe榪橀渶瑕佽法榪囩▼鍒嗘瀽鍜屽紼嬪簭鐨勬帶鍒舵祦鐨勫寲綆</strong>錛堣濡俢ontinuation杞姸鎬佹満絳夛級(jí)銆傜洰鍓嶅叿浣撴庝箞鍋氭垜榪樺湪瀛︿範(fàn)褰撲腑銆備笉榪囨垜浠兂錛屾棦鐒秗epeat鍑芥暟鏄氳繃閫掑綊鏉ユ弿榪扮殑錛岄偅鎴戜滑鑳戒笉鑳介氳繃瀵規(guī)墍鏈変唬鐮佽繘琛宨nter-procedural analyzing錛屼粠鑰屽彂鐜拌濡? </p><p style="text-align: justify"><span style="font-size:10pt">repeat 3 times </span></p><p style="text-align: justify"><span style="font-size:10pt">    do something good </span></p><p style="text-align: justify"><span style="font-size:10pt">end </span></p><p>灝辨槸涓涓驚鐜紝浠庤岀敓鎴愮敤鐪熸鐨勫驚鐜寚浠わ紙璀璇磄oto錛夊憿錛熻繖涓棶棰樻槸涓緢鏈夋剰鎬濈殑闂錛屾垜瑙夊緱鎴戝鏋滃彲浠ラ氳繃瀛︿範(fàn)闈?rùn)鎬佸垎鏋愪粠鑰岃В鍐沖畠錛屼笉榪涙垜鐨勮兘鍔涗細(xì)寰楀埌鎻愬崌錛屾垜瀵逛綘浠殑縐戞櫘涔熶細(xì)鍋氬緱鏇村ソ銆? </p><p style="text-align: justify"><h2>鍚庤 </h2></p><p>铏界劧榪樹笉鍒頒簲鍗冨瓧錛屼絾鏄昏寰楀啓浜?jiǎn)濂藉鐨勬牱瀛愩傛諱箣鎴戝笇鏈涜鑰呭湪鐪嬪畬銆婇浂銆嬪拰銆婁竴銆嬩箣鍚庯紝瀵規(guī)帴涓嬫潵闇瑕佸涔?fàn)鐨勪笢瑗挎湁涓涓緝涓烘竻鏅扮殑璁よ瘑銆?/p> <img src ="http://www.shnenglu.com/vczh/aggbug/205702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/vczh/" target="_blank">闄堟鐎?vczh)</a> 2014-02-11 12:53 <a href="http://www.shnenglu.com/vczh/archive/2014/02/11/205702.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璺焩czh鐪嬪疄渚嬪緙栬瘧鍘熺悊鈥斺旈浂錛氬簭璦http://www.shnenglu.com/vczh/archive/2014/01/19/205468.html闄堟鐎?vczh)闄堟鐎?vczh)Sat, 18 Jan 2014 17:21:00 GMThttp://www.shnenglu.com/vczh/archive/2014/01/19/205468.htmlhttp://www.shnenglu.com/vczh/comments/205468.htmlhttp://www.shnenglu.com/vczh/archive/2014/01/19/205468.html#Feedback4http://www.shnenglu.com/vczh/comments/commentRss/205468.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/205468.html鍦ㄣ婂浣曡璁′竴闂ㄨ璦銆嬮噷闈紝鎴戣浜?jiǎn)涓浜涜璦鏂歸潰鐨勪笢瑗匡紝榪樻湁鐥涘揩鐨勫柗浜?jiǎn)涓浜沊X綺変粈涔堢殑銆備笉榪囧崟綰榪欎釜涔熸槸寰堟棤鑱婄殑錛屾墍浠ユ垜寮浜?jiǎn)杩欎釜銆婅窡vczh鐪嬪疄渚嬪緙栬瘧鍘熺悊銆嬬郴鍒楋紝鎰忓湪縐戞櫘涓浜涚紪璇戝師鐞嗙殑鐭ヨ瘑錛屽敖閲忚澶у鍙互鍦ㄥ垱閫犺璦涔嬪悗錛岃嚜宸卞啓涓涓師鍨嬨傚湪榪欓噷鎴戞嬁鎴戝垱閫犵殑涓闂ㄥ緢鏈夎叮鐨勮璦 https://github.com/vczh/tinymoe/ 浣滀負(fù)瀹炰緥銆?

 

鍟嗕笟緙栬瘧鍣ㄥ鍔熻兘鍜岃川閲忕殑瑕佹眰閮芥槸寰堥珮鐨勶紝閲岄潰澶ч噺鐨勪笢瑗垮叾瀹為兘璺熺紪璇戝師鐞嗘病鍏崇郴銆備竴涓吀鍨嬬殑緙栬瘧鍘熺悊鐨勫師鍨嬫湁浠涔堢壒寰佸憿錛?

  1. 鎬ц兘浣?
  2. 閿欒淇℃伅闅劇湅
  3. 娌℃湁媯(gè)鏌ユ墍鏈夋儏鍐靛氨鐢熸垚浠g爜
  4. 浼樺寲鍋氬緱鐑?
  5. 鍑犱箮娌℃湁緙栬瘧閫夐」

 

絳夌瓑銆俆inymoe灝辨弧瓚充簡(jiǎn)涓婇潰鐨?縐嶆儏鍐碉紝鍥犱負(fù)鎴戠殑鐩爣涔熷彧鏄兂鍋氫竴涓師鍨嬶紝鍚戝ぇ瀹朵粙緇嶇紪璇戝師鐞嗙殑鍩虹鐭ヨ瘑銆傚綋鐒?dòng)灱屾垜瀵硅娉曠殑璁捐杩樻槸灏介噺闈牁q戝伐涓氳川閲忕殑錛屽彧鏄疄鐜版病鏈夎姳澶蹇?jī)鎬濄?

 

涓轟粈涔堟垜瑕佺敤Tinymoe鏉ヤ綔涓哄疄渚嬪憿錛熷洜涓篢inymoe鏄皯鏈夌殑涓縐嶇敤璧鋒潵綆鍗曪紝鑰屼笖搴撳彲浠ユ湁澶氬鏉傚啓澶氬鏉傜殑璇█錛屽氨璺烠++涓鏍楓侰++11棰濇爣鍑嗗簱鍦ㄤ竴璧風(fēng)敤綆鐩存槸鎰夊揩鍟婏紝Tinymoe鐨勪唬鐮佷篃鏄繖涔堝啓鐨勩備絾鏄繖騫朵笉濡ㄧ浣犲彲浠ュ湪鍐機(jī)++搴撶殑鏃跺欏彂鎸ヤ綘鐨勬兂璞″姏銆俆inymoe涔熸槸涓鏍風(fēng)殑銆備負(fù)浠涔堝憿錛屾垜鏉ヤ婦涓緥瀛愩?

 

Hello, world!

Tinymoe鐨刪ello world紼嬪簭鏄緢綆鍗曠殑錛?

 

module hello world

using standard library

 

sentence print (message)

    redirect to "printf"

end

 

phrase main

    print "Hello, world!"

end

 

module鎸囩殑鏄ā鍧楃殑鍚嶅瓧錛屾櫘閫氱殑紼嬪簭涔熸槸涓涓ā鍧椼倁sing鎸囩殑鏄綘瑕佸紩鐢ㄧ殑妯″潡鈥斺攕tandard library灝辨槸Tinymoe鐨凷TL浜?jiǎn)鈥斺斿綋鐒惰繖涓▼搴忓茍娌℃湁鐢ㄥ埌浠諱綍standard library鐨勪笢瑗褲傝鍒拌繖閲屽ぇ瀹跺彲鑳芥剰璇嗗埌浜?jiǎn)锛孴inymoe鐨勫悕瀛楀彲浠ユ槸涓嶅畾闀跨殑token緇勬垚鐨勶紒娌¢敊錛屽悗闈㈠ぇ瀹朵細(xì)鎱㈡參鎰忚瘑鍒拌繖縐嶅仛娉曟湁澶氫箞鐨勫己澶с?

 

鍚庨潰鏄痯rint鍑芥暟鍜宮ain鍑芥暟銆俆inymoe鏄弗鏍煎尯鍒嗚鍙ュ拰琛ㄨ揪寮忕殑錛屽彧鏈塻entence鍜宐lock寮澶寸殑鍑芥暟鎵嶈兘浣滀負(fù)璇彞錛岃屼笖鍚屾椂鍙湁phrase寮澶寸殑鍑芥暟鎵嶈兘浣滀負(fù)琛ㄨ揪寮忋傛墍浠ヤ笅闈㈢殑紼嬪簭鏄笉鍚堟硶鐨勶細(xì)

 

phrase main

    (print "Hello, world!") + 1

end

 

鍘熷洜灝辨槸錛宲rint鏄痵entence錛屼笉鑳戒綔涓鴻〃杈懼紡浣跨敤錛屽洜姝や粬涓嶈兘琚?1銆?

 

Tinymoe鐨勫嚱鏁板弬鏁伴兘琚啓鍦ㄦ嫭鍙烽噷闈紝涓涓弬鏁伴渶瑕佷竴涓嫭鍙楓傚埌浜?jiǎn)杩欓噷澶у鍙兘浼?xì)瑙夊緱寰堝鎬紝涓嶈繃寰堝揩灝變細(xì)鏈夎В絳斾簡(jiǎn)銆備負(fù)浠涔堣榪欎箞鍋氾紝涓嬩竴涓緥瀛愬氨浼?xì)鍛婅瘔鎴戜滑銆?

 

print鍑芥暟鐢ㄧ殑redirect to鏄疶inymoe澹版槑FFI錛團(tuán)oreign Function Interface錛夌殑鏂規(guī)硶錛屼篃灝辨槸璇達(dá)紝褰撲綘榪愯浜?jiǎn)print錛屼粬灝變細(xì)鍘籬ost閲岄潰鎵句竴涓彨鍋歱rintf鐨勫嚱鏁版潵榪愯銆備笉榪囧ぇ瀹朵笉瑕佽浼?xì)锛孴inymoe騫舵病鏈夎璁捐鎴愬彲浠ョ洿鎺ヨ皟鐢–鍑芥暟錛屾墍浠ヨ繖涓悕瀛楀叾瀹炴槸闅忎究鍐欑殑錛屽彧瑕乭ost鎻愪緵浜?jiǎn)涓涓彨鍋歱rintf鐨勫嚱鏁板畬鎴恜rintf璇ュ仛鐨勪簨鎯呭氨琛屼簡(jiǎn)銆俶ain鍑芥暟灝變笉鐢ㄨВ閲婁簡(jiǎn)錛屽緢鐩寸櫧銆?

1鍔犲埌100絳変簬5050

榪欎釜渚嬪瓙鍙互鍦═inymoe鐨勪富欏碉紙https://github.com/vczh/tinymoe/錛変笂闈㈢湅鍒幫細(xì)

 

module hello world

using standard library

 

sentence print (message)

redirect to "printf"

end

 

phrase sum from (start) to (end)

set the result to 0

repeat with the current number from start to end

add the current number to the result

end

end

 

phrase main

print "1+ ... +100 = " & sum from 1 to 100

end

 

涓轟粈涔堝悕瀛楀彲浠ユ槸澶氫釜token錛熶負(fù)浠涔堟瘡涓涓弬鏁伴兘瑕佷竴涓嫭鍙鳳紵鐪嬪姞綺楃殑閮ㄥ垎灝辯煡閬撲簡(jiǎn)錛佹鏄洜涓篢inymoe鎯寵姣忎竴琛屼唬鐮侀兘鍙互琚康鍑烘潵錛屾墍浠ユ墠榪欎箞璁捐鐨勩傚綋鐒?dòng)灱屽ぇ瀹惰偗瀹氶兘鐭ラ亾鎬庝箞綆梥tart + (start+1) + … + (end-1) + end浜?jiǎn)锛屾墍浠ュ簲璇ュ緢瀹規(guī)槗灝卞彲浠ョ湅鎳傝繖涓嚱鏁伴噷闈㈢殑浠g爜鍏蜂綋鏄粈涔堟剰鎬濄?

 

鍦ㄨ繖閲屽彲浠ョ◢寰鍋氫竴涓嬭В閲娿倀he result鏄竴涓瀹氫箟鐨勫彉閲忥紝浠h〃鍑芥暟鐨勮繑鍥炲箋傚彧瑕佷綘寰the result閲岄潰鍐欎笢瑗匡紝鍙鍑芥暟涓緇撴潫錛屼粬灝卞彉鎴愬嚱鏁扮殑榪斿洖鍊間簡(jiǎn)銆俆inymoe鐨勬嫭鍙鋒病鏈変粈涔堢壒孌婃剰鎬濓紝灝辨槸鏀瑰彉浼樺厛綰э紝鎵浠ラ偅涓鍙ュ驚鐜垯鍙互閫氳繃娣誨姞鎷彿鐨勬柟娉曞啓鎴愯繖鏍鳳細(xì)

 

repeat with (the current number) from (start) to (end)

 

澶у鍙兘浼?xì)鎯冲Q宺epeat with鏄笉鏄叧閿瓧錛熷綋鐒朵笉鏄紒repeat with鏄痵tandard library閲岄潰瀹氫箟鐨勪竴涓猙lock鍑芥暟銆傚ぇ瀹剁煡閬揵lock鍑芥暟鐨勬剰鎬濅簡(jiǎn)鍚э紝灝辨槸榪欎釜鍑芥暟鍙互甯︿竴涓猙lock銆俠lock鏈変竴浜涚壒鎬у彲浠ヨ浣犲啓鍑虹被浼紅ry-catch閭f牱鐨勫嚑涓猙lock榪炲湪涓璧風(fēng)殑澶lock錛岀壒鍒傚悎鍐欏簱銆?

 

鍒頒簡(jiǎn)榪欓噷澶у蹇?jī)涓彲鑳戒細(xì)鏈夌枒闂Q屽驚鐜負(fù)浠涔堝彲浠ュ仛鎴愬簱鍛紵榪樻湁鏇村姞浠や漢闇囨儕鐨勬槸錛宐reak鍜宑ontinue涔熶笉鏄叧閿瓧錛屾槸sentence錛佸洜涓簉epeat with鏄湁浠g爜鐨勶細(xì)

 

category

    start REPEAT

    closable

block (sentence deal with (item)) repeat with (argument item) from (lower bound) to (upper bound)

    set the current number to lower bound

    repeat while the current number <= upper bound

        deal with the current number

        add 1 to the current number

    end

end

 

鍓嶉潰鐨刢ategory鏄敤鏉ュ畾涔変竴浜沚lock鐨勯『搴忓拰鍖呭洿緇撴瀯浠涔堢殑銆俽epeat with鏄睘浜嶳EPEAT鐨勶紝鑰宐reak鍜宑ontinue澹版槑浜?jiǎn)鑷繁鍙兘鐩存帴鎴栬呴棿鎺ユ柟鍦≧EPEAT閲岄潰錛屽洜姝ゅ鏋滀綘鍦ㄤ竴涓病鏈夊驚鐜殑鍦版柟璋冪敤break鎴栬卌ontinue錛岀紪璇戝櫒灝變細(xì)鎶ラ敊浜?jiǎn)銆傝繖鏄竴涓姳杈瑰姛鑳斤紝鐢ㄦ潵闃叉鎵嬭鐨勩?

 

澶у鍙兘浼?xì)娉ㄦ剰鍒颁竴涓柊涓滆タ錛?argument item)銆俛rgument鐨勬剰鎬濇寚鐨勬槸錛屽悗闈㈢殑item鏄痓lock閲岄潰鐨勪唬鐮佺殑涓涓弬鏁幫紝瀵逛簬repeat with鍑芥暟鏈韓浠栦笉鏄竴涓弬鏁般傝繖灝遍氳繃涓涓緢鑷劧鐨勬柟娉曠粰block娣誨姞鍙傛暟浜?jiǎn)銆傚鏋滀綘鐢╮uby鐨勮瘽灝卞緱鍐欐垚榪欎釜鎮(zhèn)插偓鐨勬牱瀛愶細(xì)

 

repeat_with(1, 10) do |item|

    xxxx

end

 

鑰岀敤C++鍐欒搗鏉ュ氨鏇存?zhèn)插偓浜?jiǎn)錛?

 

repeat_with(1, 10, [](int item)

{

    xxxx

});

 

block鐨勭涓涓弬鏁皊entence deal with (item)灝辨槸涓涓紩鐢ㄤ簡(jiǎn)block涓棿鐨勪唬鐮佺殑濮旀墭銆傛墍浠ヤ綘浼?xì)鐪嬪堫C唬鐮侀噷闈細(xì)璋冪敤瀹冦?

 

濂戒簡(jiǎn)錛岄偅repeat while鎬繪槸鍏抽敭瀛椾簡(jiǎn)鍚р斺斾笉鏄紒鍚庨潰澶у榪樹細(xì)鐭ラ亾錛屽氨榪?

 

if xxx

    yyy

else if zzz

    www

else if aaa

    bbb

else

    ccc

end

 

涔熷彧鏄綘璋冪敤浜?jiǎn)if銆乪lse if鍜宔lse鐨勪竴緋誨垪鍑芥暟鐒跺悗璁╀粬浠覆璧鋒潵鑰屽凡銆?

 

閭inymoe鍒板簳鎻愪緵浜?jiǎn)浠涔堝熀紜璁炬柦鍛紵鍏跺疄鍙湁select-case鍜岄掑綊銆傜敤榪欎袱涓笢瑗匡紝鍔犱笂鍐呯疆鐨勬暟緇勶紝灝卞浘鐏靛畬澶囦簡(jiǎn)銆傚浘鐏靛畬澶囧氨鏄繖涔堝鏄撳晩銆?

 

澶氶噸鍒嗘淳錛圡ultiple Dispatch錛?

璁插埌榪欓噷錛屾垜涓嶅緱涓嶈錛孴inymoe涔熷彲浠ュ啓綾伙紝涔熷彲浠ョ戶鎵匡紝涓嶈繃浠栬窡浼犵粺鐨勮璦涓嶄竴鏍風(fēng)殑錛岀被鏄病鏈夋瀯閫犲嚱鏁般佹瀽鏋勫嚱鏁板拰鍏朵粬鎴愬憳鍑芥暟鐨勩俆inymoe鎵鏈夌殑鍑芥暟閮芥槸鍏ㄥ眬鍑芥暟錛屼絾鏄綘鍙互浣跨敤澶氶噸鍒嗘淳鏉?鎸戦?綾誨瀷銆傝繖灝遍渶瑕佺涓変釜渚嬪瓙浜?jiǎn)锛堜篃鍙互鍦ㄤ富椤典笂鎵惧垘图?jí)錛?

 

module geometry

using standard library

 

phrase square root of (number)

    redirect to "Sqrt"

end

 

sentence print (message)

    redirect to "Print"

end

 

type rectangle

    width

    height

end

 

type triangle

    a

    b

    c

end

 

type circle

    radius

end

 

phrase area of (shape)

    raise "This is not a shape."

end

 

phrase area of (shape : rectangle)

    set the result to field width of shape * field height of shape

end

 

phrase area of (shape : triangle)

    set a to field a of shape

    set b to field b of shape

    set c to field c of shape

    set p to (a + b + c) / 2

    set the result to square root of (p * (p - a) * (p - b) * (p - c))

end

 

phrase area of (shape : circle)

    set r to field radius of shape

    set the result to r * r * 3.14

end

 

phrase (a) and (b) are the same shape

    set the result to false

end

 

phrase (a : rectangle) and (b : rectangle) are the same shape

    set the result to true

end

 

phrase (a : triangle) and (b : triangle) are the same shape

    set the result to true

end

 

phrase (a : circle) and (b : circle) are the same shape

    set the result to true

end

 

phrase main

    set shape one to new triangle of (2, 3, 4)

    set shape two to new rectangle of (1, 2)

    if shape one and shape two are the same shape

        print "This world is mad!"

    else

        print "Triangle and rectangle are not the same shape!"

    end

end

 

榪欎釜渚嬪瓙紼嶅井闀夸簡(jiǎn)涓鐐圭偣錛屼笉榪囧ぇ瀹跺彲浠ュ緢娓呮鐨勭湅鍒版垜鏄浣曞畾涔変竴涓被鍨嬨佸垱寤轟粬浠拰璁塊棶鎴愬憳鍙橀噺鐨勩俛rea of鍑芥暟鍙互璁$畻涓涓鉤闈㈠嚑浣曞浘褰㈢殑闈㈢Н錛岃屼笖浼?xì)鏍规嵁浣犱紶缁欎粬鐨勪笉鍚岀殑鍑犱綍鍥惧舰鑰屼嬌鐢ㄤ笉鍚岀殑鍏紡銆傚綋鎵鏈夌殑綾誨瀷鍒ゆ柇閮藉け璐ョ殑鏃跺欙紝灝變細(xì)鎺夎繘閭d釜娌℃湁浠諱綍綾誨瀷澹版槑鐨勫嚱鏁幫紝浠庤屽紩鍙戜竴鍦恒傚棷錛屽叾瀹瀟ry/catch/finally/raise閮芥槸鍑芥暟鏉ョ殑鈥斺擳inymoe瀵規(guī)帶鍒舵祦鐨勬帶鍒跺氨鏄姝ゅ己澶э紝鍟婂搱鍝堝搱鍝堛傚氨榪瀝eturn閮藉彲浠ヨ嚜宸卞仛錛屾墍浠inymoe涔熶笉鎻愪緵棰勫畾涔夌殑return銆?

 

閭hrase (a) and (b) are the same shape鎬庝箞鍔炲憿錛熸病闂錛孴inymoe鍙互鍚屾椂鎸囧畾澶氫釜鍙傛暟鐨勭被鍨嬨傝屼笖Tinymoe鐨勫疄鐜板叿鏈夎窡C++铏氬嚱鏁頒竴鏍風(fēng)殑鎬ц川鈥斺旀棤璁轟綘鏈夊灝戜釜鍙傛暟鏍囪浜?jiǎn)绫诲瀷锛屾垜閮藉彲浠(n)璺寵漿鍒頒竴涓綘闇瑕佺殑鍑芥暟銆傝繖閲岀殑n鎸囩殑鏄爣璁頒簡(jiǎn)綾誨瀷鐨勫弬鏁扮殑涓暟錛岃屼笉鏄嚱鏁板疄渚嬬殑涓暟錛屾墍浠ヨ窡C++鐨勬儏鍐墊槸涓鏍風(fēng)殑鈥斺斿洜涓簍his鍙兘鏈変竴涓紝鎵浠ュ氨鏄疧(1)銆傝嚦浜嶵inymoe鍒板簳鏄庝箞瀹炵幇鐨勶紝鍙渶瑕佺湅銆婂浣曡璁′竴闂ㄨ璦銆嬬浜旂瘒錛?a href="http://www.shnenglu.com/vczh/archive/2013/05/25/200580.html">http://www.shnenglu.com/vczh/archive/2013/05/25/200580.html錛夊氨鏈夌瓟妗堜簡(jiǎn)銆?

Continuation Passing Style

涓轟粈涔圱inymoe鐨勬帶鍒舵祦閮藉彲浠ヨ嚜宸卞仛鍛紵鍥犱負(fù)Tinymoe鐨勫嚱鏁伴兘鏄啓鎴愪簡(jiǎn)CPS榪欑椋庢牸鐨勩傚叾瀹濩PS澶у閮藉緢鐔熸?zhèn)夊Q屽綋浣犵敤jquery鍋氬姩鐢伙紝鐢╪ode.js鍋欼O鐨勬椂鍊欙紝閭d簺宓屽鐨勪竴涓竴涓殑lambda琛ㄨ揪寮忥紝灝辨湁鐐笴PS鐨勫懗閬撱備笉榪囧湪榪欓噷鎴戜滑騫舵病鏈夌湅鍒板祵濂楃殑lambda錛岃繖鏄洜涓篢inymoe鎻愪緵鐨勮娉曪紝璁㏕inymoe鐨勭紪璇戝櫒鍙互鎶婂悓涓涓眰嬈$殑浠g爜錛岃漿鎴愬祵濂楃殑lambda閭f牱鐨勪唬鐮併傝繖涓繃紼嬪氨鍙獵PS鍙樻崲銆俆inymoe铏界劧鐢ㄤ簡(jiǎn)寰堝鍑芥暟寮忕紪紼嬬殑鎵嬫錛屼絾鏄粬騫朵笉鏄竴闂ㄥ嚱鏁版槸璇█錛屽彧鏄竴闂ㄦ櫘閫氱殑榪囩▼寮忚璦銆備絾鏄繖璺烠璇█涓嶄竴鏍鳳紝鍥犱負(fù)瀹冭繛C#鐨剏ield return閮藉彲浠ュ啓鎴愬嚱鏁幫紒榪欎釜渚嬪瓙灝辨洿闀夸簡(jiǎn)錛屽ぇ瀹跺彲浠ュ埌Tinymoe鐨勪富欏典笂鐪嬨傛垜榪欓噷鍙創(chuàng)涓灝忔浠g爜錛?

 

module enumerable

using standard library

 

symbol yielding return

symbol yielding break

 

type enumerable collection

    body

end

 

type collection enumerator

    current yielding result

    body

    continuation

end

 

鐣ワ紙榪欓噷瀹炵幇浜?jiǎn)璺焑numerable鐩稿叧鐨勫嚱鏁幫紝鍖呮嫭yield return錛?

 

block (sentence deal with (item)) repeat with (argument item) in (items : enumerable collection)

    set enumerator to new enumerator from items

    repeat

        move enumerator to the next

        deal with current value of enumerator

    end

end

 

sentence print (message)

    redirect to "Print"

end

 

phrase main

    create enumerable to numbers

        repeat with i from 1 to 10

            print "Enumerating " & i

            yield return i

        end

    end

 

    repeat with number in numbers

        if number >= 5

            break

        end

        print "Printing " & number

    end

end

 

浠涔堝彨妯℃嫙C#鐨剏ield return鍛紵灝辨槸榪炴儼鎬ц綆椾篃涓璧鋒ā鎷燂紒鍦╩ain鍑芥暟鐨勭涓閮ㄥ垎錛屾垜鍒涘緩浜?jiǎn)涓涓猠numerable錛坕terator錛夛紝鍖呭惈1鍒?0鍗佷釜鏁板瓧錛岃屼笖姣忎駭鐢熶竴涓暟瀛楄繕浼?xì)鎵撳嵃鍑轰竴鍙ヨ瘽銆備絾鏄帴涓嬫潵鎴戝湪寰幆閲岄潰鍙彇鍓?涓紝鎵撳嵃鍓?涓紝鍥犳鎵ц緇撴灉灝辨槸

褰擄紒

 

CPS椋庢牸鐨勫嚱鏁扮殑濞佸姏鍦ㄤ簬錛屾瘡涓涓嚱鏁伴兘鍙互鎺у埗浠栧浣曟墽琛屽嚱鏁扮粨鏉熶箣鍚庡啓鍦ㄥ悗闈㈢殑浠g爜銆備篃灝辨槸璇達(dá)紝浣犲彲浠ユ牴鎹綘鐨勯渶瑕侊紝騫茶剢閫夋嫨淇濇姢鐜板満錛岀劧鍚庝互鍚庡啀鍥炲銆傛槸涓嶆槸鍚搗鏉ュ緢鍍弆ua鐨刢oroutine鍛紵鍦═inymoe錛宑oroutine涔熷彲浠ヨ嚜宸卞仛錛?

 

铏界劧鍑芥暟鏈鍚庤杞崲鎴愪簡(jiǎn)CPS椋庢牸鐨刟st錛岃屼笖嫻嬭瘯鐢ㄧ殑鐢熸垚C#浠g爜鐨勭‘涔熸槸鍘熷皝涓嶅姩鐨勮緭鍑轟簡(jiǎn)鍑烘潵錛屾墍浠ヨ繍琛岃繖涓▼搴忚楄垂浜?jiǎn)澶ч噺鐨勫嚱鏁拌皟鐢ㄣ備絾榪欏茍涓嶆剰鍛崇潃Tinymoe鐨勮櫄鎷熸満涔熻榪欎箞鍋氥傚ぇ瀹惰璁頒綇錛屼竴涓璦涔熷ソ錛岀被搴撲篃濂斤紝緇欎綘鐨勬帴鍙g殑姒傚康錛岃窡瀹炵幇鐨勬蹇碉紝鏈夊彲鑳藉畬鍏ㄤ笉鍚屻倅ield return鍐欏嚭鏉ョ殑紜鑺辮垂鐐瑰績(jī)鎬濓紝鎵浠ャ婂簭璦銆嬫垜涔熶笉璁茶繖涔堝浜?jiǎn)锛屽悗绠嬬殑鏂囩珷浼?xì)璇︾粏浠嬬粛榪欐柟闈㈢殑鐭ヨ瘑錛屽綋鐒朵簡(jiǎn)錛岃繕浼?xì)鍛婅瘔浣犳庝箞瀹炵幇鐨勩?

 

灝懼0

榪欓噷鎴戞寫閫変簡(jiǎn)鍥涗釜渚嬪瓙鏉ュ睍紺篢inymoe鏈閲嶈鐨勪竴浜涙蹇點(diǎn)備竴闂ㄨ璦錛岃搴旂敤鐢ㄨ搗鏉ョ畝鍗曪紝搴撳啓璧鋒潵鍙互鍙戞尌鎯寵薄鍔涳紝鎵嶆槸鏈夊墠閫旂殑銆倅ield return渚嬪瓙閲岄潰鐨刴ain鍑芥暟涓鏍鳳紝鐢ㄧ殑鏃跺欏娓呯埥錛屾竻鐖藉埌璁╀綘瀹屽叏蹇樿yield return瀹炵幇鐨勬椂鍊欓噷闈㈢殑鍚勭楹葷儲(chǔ)鐨勭粏鑺傘?

 

鎵浠ヤ負(fù)浠涔堟垜瑕佹寫閫塗inymoe浣滀負(fù)瀹炰緥鏉ョ鏅紪璇戝師鐞嗗憿錛熸湁涓や釜鍘熷洜銆傜涓涓師鍥犳槸錛屾兂瑕佸疄鐜癟inymoe錛岄渶瑕佸ぇ閲忕殑鐭ヨ瘑銆傛墍浠ユ棦鐒惰繖涓郴鍒楁兂璁╁ぇ瀹惰兘澶熺湅瀹屽疄鐜頒竴涓猅inymoe鐨勪綆璐ㄩ噺鍘熷瀷錛屽綋鐒朵細(xì)璁插緢澶氱煡璇嗙殑銆傜浜屼釜鍘熷洜鏄紝鎴戞兂閫氳繃榪欎釜渚嬪瓙鍚戝ぇ瀹跺皢涓涓亾鐞嗭紝灝辨槸搴撳拰搴旂敤 銆佺紪璇戝櫒鍜岃娉曘佸疄鐜板拰鎺ュ彛錛屽畬鍏ㄥ彲浠ュ仛鍒伴殧紱誨鏉傦紝鍙暀緇欐渶緇堢敤鎴風(fēng)畝鍗曠殑閮ㄥ垎銆?span style="font-size:14pt">浣犵湅鍒扮殑澶嶆潅鐨勬帴鍙o紝騫朵笉鎰忓懗鐫浠栫殑瀹炵幇鏄噧鑲跨殑銆備綘鐪嬪埌鐨勭畝鍗曠殑鎺ュ彛錛屼篃涓嶆剰鍛崇潃浠栫殑瀹炵幇灝卞緢綆媧?/strong>銆?

 

Tinymoe鐩墠宸茬粡鍙互杈撳嚭C#浠g爜鏉ユ墽琛屼簡(jiǎn)銆傚悗闈㈡垜榪樹細(xì)緇橳inymoe鍔犱笂闈?rùn)鎬佸垎鏋愬拰綾誨瀷鎺ㄥ銆傚浜庤繖綾昏璦鍋氶潤(rùn)鎬佸垎鏋愬拰綾誨瀷鎺ㄥ鍙堝緢澶氶夯鐑?chǔ)锛屾垜鐜板湪杩樻病鏈夊畬鍏ㄦ悶鏄庣櫧銆傝濡傝榪欑鍙互鑷繁鎺у埗continuation鐨勫嚱鏁拌鎬庝箞緙栬瘧鎴愮姸鎬佹満鎵嶈兘閬垮厤鎺夊ぇ閲忕殑鍑芥暟璋冪敤錛屽氨涓嶆槸涓涓鏄撶殑闂銆傛墍浠ュ湪緋誨垪涓杈瑰仛鐨勬椂鍊欙紝鎴戣繕浼?xì)涓杈圭爺絀惰繖涓簨鎯呫傚鏋滃埌鏃跺欑郴鍒楁妸緙栬瘧閮ㄥ垎鍐欏畬鐨勫悓鏃訛紝榪欎簺闂鎴戜篃鎼炴槑鐧界殑璇濓紝閭f垜灝變細(xì)璁╄繖涓郴鍒楁墿灞曞埌鍖呭惈闈?rùn)鎬佸垎鏋愬拰綾誨瀷鎺ㄥ錛岀戶緇線涓嬭銆?/p>

闄堟鐎?vczh) 2014-01-19 01:21 鍙戣〃璇勮
]]>
2013騫寸粓鎬葷粨http://www.shnenglu.com/vczh/archive/2014/01/04/205169.html闄堟鐎?vczh)闄堟鐎?vczh)Sat, 04 Jan 2014 13:52:00 GMThttp://www.shnenglu.com/vczh/archive/2014/01/04/205169.htmlhttp://www.shnenglu.com/vczh/comments/205169.htmlhttp://www.shnenglu.com/vczh/archive/2014/01/04/205169.html#Feedback9http://www.shnenglu.com/vczh/comments/commentRss/205169.htmlhttp://www.shnenglu.com/vczh/services/trackbacks/205169.html2013騫存垜灝卞共浜?jiǎn)涓や欢浜嬫儏銆傜涓浠舵槸gaclib錛岀浜屼歡鏄?a >tinymoe銆?

 

Gaclib緇堜簬鍋氬埌瀹夊叏鐨勬敮鎸丆++鐨勫弽灝勩佷粠XML鍔犺澆紿楀彛鍜屾帶浠朵簡(jiǎn)銆傜幇鍦ㄥ湪瀹炵幇鐨勪笢瑗垮垯鏄竴涓粰gaclib鐢ㄧ殑workflow灝忚剼鏈紝鐢ㄦ潵鍐欎竴浜涚畝鍗曠殑view鐨勯昏緫銆佸畾涔塿iewmodel鎺ュ彛錛岃繕鏈夎窡WPF宸笉澶氱殑data binding銆?

 

Tinymoe鏄垜澶т簩鐨勬椂鍊欏氨璁捐鍑烘潵鐨勪笢瑗匡紝鏃犲浠ュ墠瀵硅綆楁満鐨勭悊璁哄熀紜浜?jiǎn)瑙g殑澶獮畱锛屼互鑷充簬娌℃硶瀹炵帋图岀洿鍒扮幇鍦ㄦ墠鑳藉仛鍑烘潵銆傛葷殑鏉ヨtinymoe鏄竴涓ā浠胯嫳璇娉曠殑涓ヨ們鐨勭紪紼嬭璦鈥斺斾篃灝辨槸璇村畠鏄笉鍩轟簬NLP鐨勶紝璇硶鏄弗鏍肩殑錛屽啓閿欎竴涓崟璇嶄篃浼?xì)缂栬瘧涓崢q囥傚洜姝ゆ墍鏈夌殑鍑芥暟閮借鍐欐垚鐭錛屽寘鎷帶鍒舵祦璇彞涔熸槸銆傛墍浠ユ垜灝辨兂浜?jiǎn)涓鎯籌紝鑳戒笉鑳借鍒嗘敮銆佸驚鐜佸紓甯稿鐞嗗拰寮傛澶勭悊絳夌瓑鍏朵粬璇█鐨勫唴緗殑鍔熻兘鍦ㄦ垜榪欓噷閮藉彉鎴愬簱錛熻繖褰撶劧鏄彲浠ョ殑錛屽彧瑕佸仛鍏ㄦ枃鐨刢ps鍙樻崲錛岀劧鍚庤姹傝繖浜涙帶鍒舵祦鍑芥暟涔熷啓鎴恈ps鐨勯鏍煎氨鍙互浜?jiǎn)銆?

 

鐩墠鐨勭涓涓兂娉曟槸錛岀瓑鎼炲ソ浜?jiǎn)涔嬪悗鍏堢敓鎴恓avascript鎴栬匔#鐨勪唬鐮侊紝涓嶅お鎯沖啓鑷繁鐨刅M浜?jiǎn)锛岀劧鍚帪鍑轰竴涓郴鍒楁枃绔犲彨鍋氥婄湅瀹炰緥璺熷ぇ鐗涘緙栬瘧鍘熺悊銆嬶紝灝變互榪欎釜tinymoe浣滀負(fù)渚嬪瓙錛屾潵鎶娿婂浣曡璁′竴闂ㄨ璦銆嬪歡緇笅鍘伙紝鍟婂搱鍝堝搱鍝堝搱銆?

 

鍐欏崥瀹㈡槸涓浠跺緢闅劇殑浜嬫儏銆傛垜澶т笁寮濮嬬粡钀ヨ繖涓猚ppblog/cnblogs鐨勫崥瀹㈢殑鏃跺欙紝涓澶╅兘鍙互鍐欎竴綃囷紝鍩烘湰涓婃槸鍦ㄨ褰曟垜瀛﹀埌鐨勪笢瑗垮拰鎴戦犵殑杞瓙銆傜幇鍦ㄩ兘姣旇緝鎳掍簡(jiǎn)錛岃寰楁暣澶╄鑷繁鍦ㄥ紑鍙戜粈涔堜篃娌℃剰鎬濅簡(jiǎn)錛屼簬鏄兂鍐欎竴浜涘埆鐨勶紝绔熺劧涓嶇煡濡備綍涓嬫墜錛屼簬鏄氨鍑轟簡(jiǎn)鍚勭娌″~瀹岀殑緋誨垪銆?

 

鎴戣寰楁垜瀛︾紪紼嬭繖13騫存潵涔熸槸瀛﹀埌浜?jiǎn)涓崬畱涓滆タ鐨勫Q岄櫎浜?jiǎn)绾_圭殑api鍜岃璦鐨勭煡璇嗕互澶栵紝寰堝鏂規(guī)硶璁洪兘緇欐垜璧峰埌浜?jiǎn)鍗佸垎閲嶈鐨勪綔鐢ㄣ備竴寮濮嬫槸闈㈠悜瀵硅薄錛岀劧鍚庢槸鏁版嵁緇撴瀯綆楁硶錛岀劧鍚庢槸闈㈠悜鏂歸潰緙栫▼錛岀劧鍚庢槸鍑芥暟寮忕紪紼嬶紝鍚庢潵榪樻帴瑙︿簡(jiǎn)鍚勭璺熷嚱鏁板紡緙栫▼鏈夊叧鐨勬蹇碉紝璀璇磖eactive programming鍟婏紝actor鍟婏紝寮傛鍟婏紝continuation絳夌瓑銆傝剳瀛愰噷鍏呮弧浜?jiǎn)鍚効U嶅悇鏍風(fēng)殑鏂規(guī)硶璁哄拰妯″瀷涔嬪悗錛岀幇鍦ㄦ棤璁哄啓浠涔堢▼搴忥紝鍑犱箮閮藉彲浠ユ嬁榪欎簺涓滆タ寰涓婂錛岀劧鍚庡仛鍑轟竴涓淮鎶や篃寰堝鏄擄紙鍓嶆彁鏄湁榪欎簺鐭ヨ瘑錛夛紝浠g爜涔熷緢綆媧佺殑紼嬪簭浜?jiǎn)銆?

 

宸ヤ綔鐨勮繖鍥涘勾鍗婇噷錛岃鎴戝涔?fàn)鍒颁簡(jiǎn)鏂囨。鍜岃嚜鍔ㄥ寲娴嬭瘯鐨勯噸瑕佹э紝浜庢槸鍒╃敤榪欏嚑騫存垜鎶婃枃妗e拰嫻嬭瘯鐨勮兘鍔涗篃閿葷偧鐨勫樊涓嶅浜?jiǎn)銆傜幇鍦ㄦ垜瑙夊緱錛屾妧鏈殑璇濆伐浣滃簲浠樿搗鏉ユ槸瓚呯駭綆鍗曪紝浣嗘槸鑷繁瀵規(guī)妧鏈殑鐑儏榪樻槸淇?jī)鋴涉垜涓嶆柇鐨勭爺绌朵笅鍘汇?014騫村簲璇ョ爺絀剁殑鎶鑳藉氨鏄槾鐐簡(jiǎn)銆?/p>

]]>
濡備綍璁捐涓闂ㄨ璦錛堝崄浜岋級(jí)鈥斺旇璁″彲鎵╁睍鐨勭被鍨?/title><link>http://www.shnenglu.com/vczh/archive/2013/11/10/204189.html</link><dc:creator>闄堟鐎?vczh)</dc:creator><author>闄堟鐎?vczh)</author><pubDate>Sun, 10 Nov 2013 09:06:00 GMT</pubDate><guid>http://www.shnenglu.com/vczh/archive/2013/11/10/204189.html</guid><wfw:comment>http://www.shnenglu.com/vczh/comments/204189.html</wfw:comment><comments>http://www.shnenglu.com/vczh/archive/2013/11/10/204189.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.shnenglu.com/vczh/comments/commentRss/204189.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/vczh/services/trackbacks/204189.html</trackback:ping><description><![CDATA[     鎽樿: 鍦ㄦ濊冩庝箞鍐欒繖涓綃囨枃绔犵殑鏃跺欙紝鎴戝張鎯沖埌浜?jiǎn)浠ュ墠璁ㄨ姝d氦姒傚侩姎勪簨鎯呫傚鏋滀竴涓郴緇熻璁捐鎴愭浜ょ殑錛屼粬鐨勫姛鑳芥墿灞曡搗鏉ヤ篃鍙互寰堝鏄撶殑淇濇寔璐ㄩ噺榪欐槸娌¢敊鐨勶紝浣嗘槸瀵逛簬姣忎竴涓崟鐙粰浠栨墿灞曞姛鑳界殑涓綋鏉ヨ錛岃繖涓郴緇熶竴鐐歸兘涓嶅ソ鐢ㄣ傛墍浠ユ垜瑙夊緱鐜板湪鐨勮璦琚璁℃垚榪欐牱涔熸槸鏈夐偅涔堢偣閬撶悊鐨勩傚氨綆楁槸璁捐Java鐨勯偅璋侊紝浠栦篃涓嶆槸鍌婚鹼紝閭d負(fù)浠涔圝ava浼?xì)琚璁℃垚杩欐狓P紵鎴戣寰楄繖璺熶粬鍒氬紑濮嬫兂璁╅噾瀛楀鐨勫簳灞傜▼搴忓憳涔熷彲浠ラ『鍒╀嬌鐢↗ava鏄湁鍏崇郴...  <a href='http://www.shnenglu.com/vczh/archive/2013/11/10/204189.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/vczh/aggbug/204189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/vczh/" target="_blank">闄堟鐎?vczh)</a> 2013-11-10 17:06 <a href="http://www.shnenglu.com/vczh/archive/2013/11/10/204189.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://www.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://4439x9.com" target="_blank">久久精品国内一区二区三区</a>| <a href="http://91chaopron.com" target="_blank">麻豆久久婷婷</a>| <a href="http://xingzhiyin85.com" target="_blank">久久精品国产99</a>| <a href="http://817794.com" target="_blank">国户精品久久久久久久久久久不卡</a>| <a href="http://261262.com" target="_blank">亚洲午夜高清视频</a>| <a href="http://22abb.com" target="_blank">久久精品在线免费观看</a>| <a href="http://www39pao.com" target="_blank">在线观看亚洲视频</a>| <a href="http://9niuw.com" target="_blank">欧美精品在线视频</a>| <a href="http://www24822.com" target="_blank">亚洲性人人天天夜夜摸</a>| <a href="http://www24822.com" target="_blank">久久免费黄色</a>| <a href="http://o3xo.com" target="_blank">亚洲美女免费精品视频在线观看</a>| <a href="http://yw5531.com" target="_blank">欧美日韩直播</a>| <a href="http://173881.com" target="_blank">午夜在线观看免费一区</a>| <a href="http://666777v3.com" target="_blank">亚洲第一中文字幕在线观看</a>| <a href="http://by4425.com" target="_blank">亚洲巨乳在线</a>| <a href="http://wwwlywbb.com" target="_blank">国产精品无人区</a>| <a href="http://994745.com" target="_blank">玖玖玖免费嫩草在线影院一区</a>| <a href="http://www8xvi.com" target="_blank">亚洲精品老司机</a>| <a href="http://avtb2120.com" target="_blank">欧美在线观看一区二区</a>| <a href="http://51winner.com" target="_blank">亚洲国产精品t66y</a>| <a href="http://kdy444.com" target="_blank">国产精品国产三级国产专播精品人</a>| <a href="http://621768.com" target="_blank">亚洲一区网站</a>| <a href="http://ydy8.com" target="_blank">亚洲国产91精品在线观看</a>| <a href="http://dzyhjx.com" target="_blank">亚洲综合日韩在线</a>| <a href="http://1332233.com" target="_blank">在线观看视频一区二区</a>| <a href="http://www47755.com" target="_blank">欧美日韩一区三区四区</a>| <a href="http://goutoujunshi.com" target="_blank">久久精品中文</a>| <a href="http://sdjinchuan.com" target="_blank">亚洲视频综合</a>| <a href="http://xjhzgy.com" target="_blank">亚洲国产女人aaa毛片在线</a>| <a href="http://97caoporm.com" target="_blank">欧美一区二区三区在线观看视频</a>| <a href="http://8868866.com" target="_blank">亚洲福利视频一区</a>| <a href="http://1323123.com" target="_blank">国产欧亚日韩视频</a>| <a href="http://myasker.com" target="_blank">欧美久久久久免费</a>| <a href="http://ju255.com" target="_blank">久久久久在线</a>| <a href="http://91pero.com" target="_blank">亚洲国产精品成人久久综合一区</a>| <a href="http://97gaoba.com" target="_blank">亚洲一区精品视频</a>| <a href="http://by56677.com" target="_blank">最新日韩欧美</a>| <a href="http://9niuw.com" target="_blank">国产亚洲精品久</a>| <a href="http://72nnnn.com" target="_blank">欧美日精品一区视频</a>| <a href="http://376524.com" target="_blank">美女诱惑一区</a>| <a href="http://300644.com" target="_blank">久久av一区二区三区漫画</a>| <a href="http://91x8.com" target="_blank">一区二区三区视频观看</a>| <a href="http://y9z8.com" target="_blank">亚洲国产一区在线观看</a>| <a href="http://021jjjflaw.com" target="_blank">久久蜜桃资源一区二区老牛</a>| <a href="http://2111952.com" target="_blank">99精品视频网</a>| <a href="http://www24668.com" target="_blank">亚洲国产精品一区二区www</a>| <a href="http://4006616309.com" target="_blank">国产欧美在线观看</a>| <a href="http://o3xo.com" target="_blank">国产精品久久久</a>| <a href="http://sh738.com" target="_blank">欧美日韩免费高清一区色橹橹</a>| <a href="http://www3344cao.com" target="_blank">久久久久青草大香线综合精品</a>| <a href="http://www888x.com" target="_blank">亚洲欧美日韩一区</a>| <a href="http://tutu80.com" target="_blank">在线亚洲免费</a>| <a href="http://2312138.com" target="_blank">亚洲精品一区二区三区四区高清</a>| <a href="http://3dxxoo.com" target="_blank">欧美成人免费全部观看天天性色</a>| <a href="http://cabenn.com" target="_blank">午夜视频在线观看一区</a>| <a href="http://669528.com" target="_blank">亚洲性色视频</a>| <a href="http://spardec.com" target="_blank">一区二区免费看</a>| <a href="http://318823.com" target="_blank">在线精品亚洲一区二区</a>| <a href="http://nachang5117.com" target="_blank">国语自产在线不卡</a>| <a href="http://65kf.com" target="_blank">国产一区香蕉久久</a>| <a href="http://5773000.com" target="_blank">国产亚洲精品成人av久久ww</a>| <a href="http://shwazrbjd.com" target="_blank">国产免费成人</a>| <a href="http://388268.com" target="_blank">国产精品久久久一区二区三区</a>| <a href="http://ddnwater.com" target="_blank">欧美美女bb生活片</a>| <a href="http://www-878899.com" target="_blank">欧美成人精品影院</a>| <a href="http://xhamster0.com" target="_blank">欧美成年人网</a>| <a href="http://tizenkorea.com" target="_blank">欧美激情精品久久久久久蜜臀</a>| <a href="http://xccp4888.com" target="_blank">蜜桃av噜噜一区</a>| <a href="http://www474000c.com" target="_blank">老司机凹凸av亚洲导航</a>| <a href="http://18mmcg.com" target="_blank">免费毛片一区二区三区久久久</a>| <a href="http://www520590.com" target="_blank">久久久久一区</a>| <a href="http://instantptt.com" target="_blank">免费欧美日韩</a>| <a href="http://ttdy20.com" target="_blank">欧美激情一区二区</a>| <a href="http://d1112.com" target="_blank">欧美日韩亚洲网</a>| <a href="http://haohetour.com" target="_blank">欧美性色综合</a>| <a href="http://www-119049.com" target="_blank">国产精品最新自拍</a>| <a href="http://5555547.com" target="_blank">国产亚洲福利一区</a>| <a href="http://tyaisen.com" target="_blank">伊人成年综合电影网</a>| <a href="http://hkbsi.com" target="_blank">亚洲第一偷拍</a>| <a href="http://yeyelu888.com" target="_blank">日韩系列在线</a>| <a href="http://sz-changrong.com" target="_blank">亚洲一区国产精品</a>| <a href="http://www1982t.com" target="_blank">久久精品综合</a>| <a href="http://91x8.com" target="_blank">欧美不卡视频一区</a>| <a href="http://kk1xx-com.com" target="_blank">最新国产の精品合集bt伙计</a>| <a href="http://118936.com" target="_blank">日韩视频专区</a>| <a href="http://dk13studio.com" target="_blank">亚洲伊人网站</a>| <a href="http://www-333304.com" target="_blank">久久久精品网</a>| <a href="http://www-26333com.com" target="_blank">欧美成人国产va精品日本一级</a>| <a href="http://zztto7.com" target="_blank">欧美精品一区二区三区蜜桃</a>| <a href="http://ccc982.com" target="_blank">国产精品成人播放</a>| <a href="http://aijiashe.com" target="_blank">国产一区二区三区日韩</a>| <a href="http://cdcpt.com" target="_blank">在线不卡亚洲</a>| <a href="http://www5xzz1.com" target="_blank">一区二区电影免费在线观看</a>| <a href="http://epiegame.com" target="_blank">香蕉av福利精品导航</a>| <a href="http://5757ff.com" target="_blank">噜噜噜在线观看免费视频日韩</a>| <a href="http://www227ee.com" target="_blank">欧美激情一区二区在线 </a>| <a href="http://4006616309.com" target="_blank">久久免费视频观看</a>| <a href="http://hzjqkj.com" target="_blank">免费精品视频</a>| <a href="http://777888789.com" target="_blank">亚洲精品美女</a>| <a href="http://lfxhfh.com" target="_blank">午夜免费日韩视频</a>| <a href="http://fsxinruiph.com" target="_blank">老司机精品久久</a>| <a href="http://www-n77.com" target="_blank">欧美三级电影大全</a>| <a href="http://1069024.com" target="_blank">好吊妞这里只有精品</a>| <a href="http://xtgoldsky.com" target="_blank">日韩一级黄色大片</a>| <a href="http://845821.com" target="_blank">久久成人av少妇免费</a>| <a href="http://wanyoulipin.com" target="_blank">欧美激情bt</a>| <a href="http://131397.com" target="_blank">亚洲在线一区二区</a>| <a href="http://beeperagain.com" target="_blank">麻豆精品国产91久久久久久</a>| <a href="http://xvideoxxnx.com" target="_blank">欧美激情a∨在线视频播放</a>| <a href="http://xxxx43.com" target="_blank">国产精品日韩高清</a>| <a href="http://www-88899.com" target="_blank">亚洲精品国产精品乱码不99</a>| <a href="http://xuanxuan88.com" target="_blank">亚洲欧美国产一区二区三区</a>| <a href="http://9924338.com" target="_blank">久久综合中文色婷婷</a>| <a href="http://343119.com" target="_blank">夜夜嗨av一区二区三区网站四季av</a>| <a href="http://diyiao.com" target="_blank">午夜在线播放视频欧美</a>| <a href="http://388123cc.com" target="_blank">欧美激情第10页</a>| <a href="http://194123.com" target="_blank">国产一区二区三区日韩欧美</a>| <a href="http://ncyy4.com" target="_blank">一本大道久久精品懂色aⅴ</a>| <a href="http://hmm47.com" target="_blank">欧美有码视频</a>| <a href="http://xingzhiyin85.com" target="_blank">亚洲精品免费电影</a>| <a href="http://tv-miya188.com" target="_blank">久久久久久亚洲精品杨幂换脸</a>| <a href="http://wwwzmcc1.com" target="_blank">欧美日韩中文字幕</a>| <a href="http://hjk56.com" target="_blank">亚洲国产另类 国产精品国产免费</a>| <a href="http://syddzs.com" target="_blank">亚洲一区二区三区高清</a>| <a href="http://zgztby.com" target="_blank">欧美成人一区二免费视频软件</a>| <a href="http://www11111111.com" target="_blank">亚洲性色视频</a>| <a href="http://xpj694.com" target="_blank">欧美连裤袜在线视频</a>| <a href="http://97seee.com" target="_blank">极品少妇一区二区三区精品视频</a>| <a href="http://www-438686.com" target="_blank">亚洲综合国产精品</a>| <a href="http://012492.com" target="_blank">亚洲黄色成人久久久</a>| <a href="http://sishengnv.com" target="_blank">久久久99精品免费观看不卡</a>| <a href="http://7555hh.com" target="_blank">国产精品免费在线</a>| <a href="http://www-33tt.com" target="_blank">一本高清dvd不卡在线观看</a>| <a href="http://994745.com" target="_blank">蜜臀91精品一区二区三区</a>| <a href="http://yys4.com" target="_blank">日韩一级免费</a>| <a href="http://9966k.com" target="_blank">欧美激情在线观看</a>| <a href="http://7345jj.com" target="_blank">亚洲国产精品电影在线观看</a>| <a href="http://www-85489.com" target="_blank">久久激情网站</a>| <a href="http://www-8617.com" target="_blank">亚洲欧美国产视频</a>| <a href="http://86311ib.com" target="_blank">欧美日韩在线观看一区二区三区</a>| <a href="http://www-49hk.com" target="_blank">亚洲国产小视频</a>| <a href="http://1355456.com" target="_blank">美女精品在线</a>| <a href="http://gzpurefaith.com" target="_blank">欧美伊人久久久久久久久影院</a>| <a href="http://yys4.com" target="_blank">国产精品美女主播</a>| <a href="http://filmcameralibrary.com" target="_blank">中日韩美女免费视频网站在线观看</a>| <a href="http://baoxiniao666.com" target="_blank">欧美成人69av</a>| <a href="http://418ch.com" target="_blank">欧美一区国产一区</a>| <a href="http://5767j.com" target="_blank">国产日产精品一区二区三区四区的观看方式 </a>| <a href="http://ztqsfw.com" target="_blank">欧美成人dvd在线视频</a>| <a href="http://6868681.com" target="_blank">激情视频一区</a>| <a href="http://xhtd688.com" target="_blank">久久中文欧美</a>| <a href="http://www3344xz.com" target="_blank">久久国产天堂福利天堂</a>| <a href="http://sqms2013.com" target="_blank">国产日韩在线一区</a>| <a href="http://susan5.com" target="_blank">久久成人羞羞网站</a>| <a href="http://042225.com" target="_blank">亚洲欧洲av一区二区三区久久</a>| <a href="http://6688se.com" target="_blank">国产精品久久网</a>| <a href="http://hwgjcm.com" target="_blank">亚洲欧美日韩天堂</a>| <a href="http://joy-learn.com" target="_blank">国产精品99久久久久久宅男 </a>| <a href="http://wy172.com" target="_blank">亚洲黄色在线</a>| <a href="http://988tz.com" target="_blank">欧美激情视频免费观看</a>| <a href="http://uu6623.com" target="_blank">久久婷婷丁香</a>| <a href="http://playav111.com" target="_blank">亚洲第一在线综合在线</a>| <a href="http://tk99444.com" target="_blank">欧美/亚洲一区</a>| <a href="http://1369080.com" target="_blank">欧美ed2k</a>| <a href="http://qmynong.com" target="_blank">一本久道久久综合中文字幕</a>| <a href="http://628155.com" target="_blank">亚洲美女免费视频</a>| <a href="http://baidijs.com" target="_blank">欧美性猛交一区二区三区精品</a>| <a href="http://www-498787.com" target="_blank">一区二区三区免费网站</a>| <a href="http://bcjianyan.com" target="_blank">一本高清dvd不卡在线观看</a>| <a href="http://imaben.com" target="_blank">国产精品mv在线观看</a>| <a href="http://ccc159.com" target="_blank">性亚洲最疯狂xxxx高清</a>| <a href="http://www-77537.com" target="_blank">欧美亚洲在线视频</a>| <a href="http://7776701.com" target="_blank">尤物在线精品</a>| <a href="http://tv-miya188.com" target="_blank">亚洲国产精品第一区二区三区</a>| <a href="http://26163c.com" target="_blank">欧美精品福利在线</a>| <a href="http://beeperagain.com" target="_blank">亚洲午夜电影网</a>| <a href="http://7234hh.com" target="_blank">亚洲欧美在线aaa</a>| <a href="http://buyiker.com" target="_blank">在线观看精品一区</a>| <a href="http://580078.com" target="_blank">亚洲国产99精品国自产</a>| <a href="http://6688zf.com" target="_blank">欧美午夜视频一区二区</a>| <a href="http://www5123ri.com" target="_blank">欧美一区二区视频在线</a>| <a href="http://a6a3.com" target="_blank">久久精品国产免费看久久精品</a>| <a href="http://dd8uau0ncu.com" target="_blank">国产亚洲一区在线</a>| <a href="http://sxxawef.com" target="_blank">蘑菇福利视频一区播放</a>| <a href="http://342008.com" target="_blank">欧美精品激情</a>| <a href="http://958997.com" target="_blank">欧美在线视频全部完</a>| <a href="http://www284tv.com" target="_blank">久久精品1区</a>| <a href="http://jiujiuri8.com" target="_blank">亚洲精选久久</a>| <a href="http://7269003.com" target="_blank">亚洲曰本av电影</a>| <a href="http://0855dyw.com" target="_blank">**欧美日韩vr在线</a>| <a href="http://48655aa.com" target="_blank">亚洲最新在线</a>| <a href="http://97seee.com" target="_blank">一色屋精品视频在线看</a>| <a href="http://520637.com" target="_blank">99国产精品国产精品毛片</a>| <a href="http://xingzhiyin85.com" target="_blank">国产精品专区一</a>| <a href="http://373gg.com" target="_blank">欧美高清自拍一区</a>| <a href="http://110673.com" target="_blank">国产精品视频yy9099</a>| <a href="http://www227ee.com" target="_blank">欧美1区2区</a>| <a href="http://xpj493.com" target="_blank">国产精品电影在线观看</a>| <a href="http://7345jj.com" target="_blank">久久综合999</a>| <a href="http://xxav2121.com" target="_blank">欧美性色综合</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>