锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美黄色精品,国产精品美女久久久久av超清 ,你懂的国产精品http://m.shnenglu.com/Plator/瀛︽湳璁ㄨ鍗氬zh-cnSun, 16 Nov 2025 17:45:12 GMTSun, 16 Nov 2025 17:45:12 GMT60STL set 甯哥敤鎿嶄綔綆浠媅杞澆]http://m.shnenglu.com/Plator/archive/2008/06/11/52906.html鑿婇Θ鑿婇ΘWed, 11 Jun 2008 11:19:00 GMThttp://m.shnenglu.com/Plator/archive/2008/06/11/52906.htmlhttp://m.shnenglu.com/Plator/comments/52906.htmlhttp://m.shnenglu.com/Plator/archive/2008/06/11/52906.html#Feedback5http://m.shnenglu.com/Plator/comments/commentRss/52906.htmlhttp://m.shnenglu.com/Plator/services/trackbacks/52906.html鑰屼竴涓粡榪囨洿姝g殑鍜屾洿鍔犲疄闄呯殑瀹氫箟搴旇鏄細涓涓泦鍚堬紙set錛夋槸涓涓鍣紝瀹冨叾涓墍鍖呭惈鐨勫厓绱犵殑鍊兼槸鍞竴鐨勩傝繖鍦ㄦ敹闆嗕竴涓暟鎹殑鍏蜂綋鍊肩殑鏃跺欐槸鏈夌敤鐨勩傞泦 鍚堜腑鐨勫厓绱犳寜涓瀹氱殑欏哄簭鎺掑垪錛屽茍琚綔涓洪泦鍚堜腑鐨勫疄渚嬨傚鏋滀綘闇瑕佷竴涓敭/鍊煎錛坧air錛夋潵瀛樺偍鏁版嵁錛宮ap鏄竴涓洿濂界殑閫夋嫨銆備竴涓泦鍚堥氳繃涓涓摼琛ㄦ潵緇?緇囷紝鍦ㄦ彃鍏ユ搷浣滃拰鍒犻櫎鎿嶄綔涓婃瘮鍚戦噺錛坴ector錛夊揩錛屼絾鏌ユ壘鎴栨坊鍔犳湯灝劇殑鍏冪礌鏃朵細鏈変簺鎱€?br>
涓嬮潰鏄竴涓緥瀛愶細

//紼嬪簭錛歴et婕旂ず
//鐩殑錛氱悊瑙TL涓殑闆嗗悎錛坰et錛?br>
#include 錛渟tring錛?br>#include 錛渟et錛?br>#include 錛渋ostream錛?br>using namespace std;

int main(int argc, char* argv[])
{
set 錛渟tring錛?strset;
set 錛渟tring錛?:iterator si;
strset.insert("cantaloupes");
strset.insert("apple");
strset.insert("orange");
strset.insert("banana");
strset.insert("grapes");
strset.insert("grapes");
for (si=strset.begin(); si!=strset.end(); si++)
{ cout 錛滐紲 *si 錛滐紲 " "; }
cout 錛滐紲 endl;
return 0;
}

// 杈撳嚭錛?apple banana cantaloupes grapes orange
//娉ㄦ剰錛氳緭鍑虹殑闆嗗悎涓殑鍏冪礌鏄寜瀛楁瘝澶у皬欏哄簭鎺掑垪鐨勶紝鑰屼笖姣忎釜鍊奸兘涓嶉噸澶嶃?

濡傛灉浣犳劅鍏磋叮鐨勮瘽錛屼綘鍙互灝嗚緭鍑哄驚鐜敤涓嬮潰鐨勪唬鐮佹浛鎹細

copy(strset.begin(), strset.end(), ostream_iterator錛渟tring錛?cout, " "));

.闆嗗悎錛坰et錛夎櫧鐒舵洿寮哄ぇ錛屼絾鎴戜釜浜鴻涓哄畠鏈変簺涓嶆竻鏅扮殑鍦版柟鑰屼笖鏇村鏄撳嚭閿欙紝濡傛灉浣犳槑鐧戒簡榪欎竴鐐癸紝浣犱細鐭ラ亾鐢ㄩ泦鍚堬紙set錛夊彲浠ュ仛浠涔堛?br>
鎵鏈夌殑STL瀹瑰櫒

瀹瑰櫒錛圕ontainer錛夌殑姒傚康鐨勫嚭鐜版棭浜庢ā鏉匡紙template錛夛紝瀹冨師鏈槸涓涓綆楁満縐戝棰嗗煙涓殑涓涓噸瑕佹蹇碉紝浣嗗湪榪欓噷錛屽畠鐨勬蹇靛拰STL娣峰悎鍦ㄤ竴璧蜂簡銆備笅闈㈡槸鍦⊿TL涓嚭鐜扮殑7縐嶅鍣細

vector錛堝悜閲忥級鈥斺擲TL涓爣鍑嗚屽畨鍏ㄧ殑鏁扮粍銆傚彧鑳藉湪vector 鐨?#8220;鍓嶉潰”澧炲姞鏁版嵁銆?br>
deque錛堝弻绔槦鍒梔ouble-ended queue錛夆斺斿湪鍔熻兘涓婂拰vector鐩鎬技錛屼絾鏄彲浠ュ湪鍓嶅悗涓ょ鍚戝叾涓坊鍔犳暟鎹?

list錛堝垪琛級鈥斺旀父鏍囦竴嬈″彧鍙互縐誨姩涓姝ャ傚鏋滀綘瀵歸摼琛ㄥ凡緇忓緢鐔熸?zhèn)夊Q岄偅涔圫TL涓殑list鍒欐槸涓涓弻鍚戦摼琛紙姣忎釜鑺傜偣鏈夋寚鍚戝墠椹卞拰鎸囧悜鍚庣戶鐨勪袱涓寚閽堬級銆?br>
set錛堥泦鍚堬級鈥斺斿寘鍚簡緇忚繃鎺掑簭浜嗙殑鏁版嵁錛岃繖浜涙暟鎹殑鍊?value)蹇呴』鏄敮涓鐨勩?br>
map錛堟槧灝勶級鈥斺旂粡榪囨帓搴忎簡鐨勪簩鍏冪粍鐨勯泦鍚堬紝map涓殑姣忎釜鍏冪礌閮芥槸鐢變袱涓肩粍鎴愶紝鍏朵腑鐨刱ey錛堥敭鍊鹼紝涓涓猰ap涓殑閿煎繀欏繪槸鍞竴鐨勶級鏄湪鎺掑簭 鎴栨悳绱㈡椂浣跨敤錛屽畠鐨勫煎彲浠ュ湪瀹瑰櫒涓噸鏂拌幏鍙栵紱鑰屽彟涓涓兼槸璇ュ厓绱犲叧鑱旂殑鏁板箋傛瘮濡傦紝闄や簡鍙互ar[43] = "overripe"榪欐牱鎵懼埌涓涓暟鎹紝map榪樺彲浠ラ氳繃ar["banana"] = "overripe"榪欐牱鐨勬柟娉曟壘鍒頒竴涓暟鎹傚鏋滀綘鎯寵幏寰楀叾涓殑鍏冪礌淇℃伅錛岄氳繃杈撳叆鍏冪礌鐨勫叏鍚嶅氨鍙互杞繪澗瀹炵幇銆?br>
multiset錛堝閲嶉泦錛夆斺斿拰闆嗗悎錛坰et錛夌浉浼鹼紝鐒惰屽叾涓殑鍊間笉瑕佹眰蹇呴』鏄敮涓鐨勶紙鍗沖彲浠ユ湁閲嶅錛夈?br>
multimap錛堝閲嶆槧灝勶級鈥斺斿拰鏄犲皠錛坢ap錛夌浉浼鹼紝鐒惰屽叾涓殑閿間笉瑕佹眰蹇呴』鏄敮涓鐨勶紙鍗沖彲浠ユ湁閲嶅錛夈?br>娉ㄦ剰錛氬鏋滀綘闃呰寰蔣鐨勫府鍔╂枃妗o紝浣犱細閬囧埌瀵規(guī)瘡縐嶅鍣ㄧ殑鏁堢巼鐨勯檲榪般傛瘮濡傦細log(n*n)鐨勬彃鍏ユ椂闂淬傞櫎闈炰綘瑕佸鐞嗗ぇ閲忕殑鏁版嵁錛屽惁鍒欒繖浜涙椂闂寸殑褰卞搷鏄彲 浠ュ拷鐣ョ殑銆傚鏋滀綘鍙戠幇浣犵殑紼嬪簭鏈夋槑鏄劇殑婊炲悗鎰熸垨鑰呴渶瑕佸鐞嗘椂闂存敻鍏籌紙time critical錛夌殑浜嬫儏錛屼綘鍙互鍘諱簡瑙f洿澶氭湁鍏沖悇縐嶅鍣ㄨ繍琛屾晥鐜囩殑璇濋銆?br>
鎬庢牱鍦ㄤ竴涓猰ap涓嬌鐢ㄧ被錛?br>
Map鏄竴涓氳繃key錛堥敭錛夋潵鑾峰緱value(鍊?鐨勬ā鏉跨被銆?br>
鍙︿竴涓棶棰樻槸浣犲笇鏈涘湪map涓嬌鐢ㄨ嚜宸辯殑綾昏屼笉鏄凡鏈夌殑鏁版嵁綾誨瀷錛屾瘮濡傜幇鍦ㄥ凡緇忕敤榪囩殑int銆傚緩绔嬩竴涓?#8220;涓烘ā鏉垮噯澶囩殑錛坱emplate-ready錛?#8221;綾伙紝浣犲繀欏葷‘淇濆湪璇ョ被涓寘鍚竴浜涙垚鍛樺嚱鏁板拰閲嶈澆鎿嶄綔絎︺備笅闈㈢殑涓浜涙垚鍛樻槸蹇呴』鐨勶細

緙虹渷鐨勬瀯閫犲嚱鏁幫紙閫氬父涓虹┖錛?br>
鎷瘋礉鏋勯犲嚱鏁?br>
閲嶈澆鐨?#8221;=”榪愮畻絎?br>
浣犲簲璇ラ噸杞藉敖鍙兘澶氱殑榪愮畻絎︽潵婊¤凍鐗瑰畾妯℃澘鐨勯渶瑕侊紝姣斿錛屽鏋滀綘鎯沖畾涔変竴涓被浣滀負 map涓殑閿紙key錛夛紝浣犲繀欏婚噸杞界浉鍏崇殑榪愮畻絎︺備絾鍦ㄨ繖閲屼笉瀵歸噸杞借繍綆楃鍋氳繃澶氳璁轟簡銆?br>
//紼嬪簭錛氭槧灝勮嚜瀹氫箟鐨勭被銆?br>//鐩殑錛氳鏄庡湪map涓庢牱浣跨敤鑷畾涔夌殑綾匯?br>
#include 錛渟tring錛?br>#include 錛渋ostream錛?br>#include 錛渧ector錛?br>#include 錛渕ap錛?br>using namespace std;

class CStudent
{
public :
int nStudentID;
int nAge;
public :
//緙虹渷鏋勯犲嚱鏁扳斺旈氬父涓虹┖
CStudent() { }
// 瀹屾暣鐨勬瀯閫犲嚱鏁?br>CStudent(int nSID, int nA) { nStudentID=nSID; nAge=nA; }
//鎷瘋礉鏋勯犲嚱鏁?br>CStudent(const CStudent& ob)
{
nStudentID=ob.nStudentID; nAge=ob.nAge; }
// 閲嶈澆“=”
void operator = (const CStudent& ob)
{
nStudentID=ob.nStudentID; nAge=ob.nAge;
}
};

int main(int argc, char* argv[])
{
map 錛渟tring, CStudent錛?mapStudent;

mapStudent["Joe Lennon"] = CStudent(103547, 22);
mapStudent["Phil McCartney"] = CStudent(100723, 22);
mapStudent["Raoul Starr"] = CStudent(107350, 24);
mapStudent["Gordon Hamilton"] = CStudent(102330, 22);

// 閫氳繃濮撳悕鏉ヨ闂瓹student綾諱腑鐨勬垚鍛?br>cout 錛滐紲 "The Student number for Joe Lennon is " 錛滐紲
(mapStudent["Joe Lennon"].nStudentID) 錛滐紲 endl;

return 0;
}

TYPEDEF

濡傛灉浣犲枩嬈嬌鐢╰ypedef鍏抽敭瀛楋紝涓嬮潰鏄釜渚嬪瓙錛?br>
typedef set 錛渋nt錛?SET_INT;
typedef SET_INT::iterator SET_INT_ITER

緙栧啓浠g爜鐨勪竴涓範鎯氨鏄嬌鐢ㄥぇ鍐欏瓧姣嶅拰涓嬪垝綰挎潵鍛藉悕鏁版嵁綾誨瀷銆?br>
ANSI / ISO瀛楃涓?br>
ANSI/ISO瀛楃涓插湪STL瀹瑰櫒涓嬌鐢ㄥ緱寰堟櫘閬嶃傝繖鏄爣鍑嗙殑瀛楃涓茬被錛屽茍寰楀埌浜嗗箍娉涘湴鎻愬★紝鐒惰屽湪緙轟箯鏍煎紡澹版槑鐨勬儏鍐典笅灝變細鍑洪棶棰樸備綘蹇呴』浣跨敤“錛滐紲”鍜岃緭鍏ヨ緭鍑烘祦錛坕ostream錛変唬鐮侊紙濡俤ec, width絳夛級灝嗗瓧絎︿覆涓茶仈璧鋒潵銆?br>
鍙湪蹇呰鐨勬椂鍊欎嬌鐢╟_str()鏉ラ噸鏂拌幏寰楀瓧絎︽寚閽堛?

鑿婇Θ 2008-06-11 19:19 鍙戣〃璇勮
]]>
灞犻緳瀹濅功http://m.shnenglu.com/Plator/archive/2008/05/30/51536.html鑿婇Θ鑿婇ΘThu, 29 May 2008 16:27:00 GMThttp://m.shnenglu.com/Plator/archive/2008/05/30/51536.htmlhttp://m.shnenglu.com/Plator/comments/51536.htmlhttp://m.shnenglu.com/Plator/archive/2008/05/30/51536.html#Feedback1http://m.shnenglu.com/Plator/comments/commentRss/51536.htmlhttp://m.shnenglu.com/Plator/services/trackbacks/51536.htmlCompilers: Principles, Techniques, and Tools錛堛婄紪璇戝師鐞?鎶鏈笌宸ュ叿銆嬶級

榪欐槸鍙︿竴閮ㄥ洜灝侀潰寰楀悕鐨勪功--“榫欎功”錛屼篃灝辨槸Aho絳変漢鎵钁楃殑銆婄紪璇戝師鐞嗘妧鏈笌宸ュ叿銆嬶紙Addison錛峎esley錛?986錛屼漢姘戦偖鐢?shù)鍑虹増绀?002騫村獎鍗扮増錛夈侫ho鏄疉CM浼氬憳濂栧緱涓伙紝榪樹笌涓婅堪Hopcroft鍚堣憲榪囥婃暟鎹粨鏋勪笌綆楁硶銆嬬瓑鍚嶄綔錛屼絾浠栨渶浜嗕笉璧風殑钁椾綔鎭愭曡繕鏄繖涓閮ㄣ傛墍璋?#8220;榫欎功”錛岃鍏ㄤ簡搴旇鏄?#8220;灞犻緳瀹濅功”錛屽洜涓哄皝闈笂鐢葷潃涓鏉$孩榫欏拰涓浣嶉獞澹傝タ鏂逛漢鐪奸噷錛岄緳閮芥槸鎭墮緳錛屾槸濡栭偑涔嬬墿錛岃岃繖鏉¢緳韜笂鍗村啓鐫“緙栬瘧鍣ㄨ璁″鏉傚害”鐨勫瓧鏍鳳紒閭d箞楠戝+鍙堜細鐢ㄤ綍縐嶆硶瀹濊繋鎴樺憿錛熷彧瑙佷粬鎶潃“鏁版嵁嫻佸垎鏋?#8221;閾犵敳錛屾専鐫“LALR鍒嗘瀽鍣ㄧ敓鎴愬櫒”闀垮墤錛屾蹇欑潃鍦ㄤ竴鍙扮粓绔墠杈撳叆鍛紝鏁㈡儏鏄釜楂樼鎶姝﹀+錛佽繖閮?#8220;榫欎功”錛屼漢浜鴻皥璧烽兘瑕佺毐鐪夛紝鍒楀嚭涓鍫嗙墷楠氾紙姒傚康瀹氫箟涓嶆竻鏅板憖錛屽浣嶄綔鑰呭垎宸ヤ笉鏄庣‘鍛錛夛紝浣嗘病浜鴻兘緇曡繃瀹冭皥緙栬瘧鍘熺悊錛氭瘯绔?#8220;緙栬瘧鍣ㄨ璁?#8221;榪欐潯鎭墮緳澶姣掞紝鑰屾涔﹁繕鏄睜榫欑殑鏈浣蟲寚鍗椼?
 
鏈夋剰鎬濈殑鏄紝璇ヤ功3浣嶄綔鑰呬腑鐨勪袱浣嶆鍓嶈繕鍚堜綔榪囧彟涓鏈婄紪璇戝櫒璁捐鍘熷垯銆嬶紝灝侀潰涓婂悓鏍鋒槸瀵瑰硻鐨勬伓榫欏拰鍕囧+錛屽彧涓嶈繃閭f椂浠栦滑榪樻病寮鎵擄紝浠呬粎鎬掔洰鐩稿悜鑰屽凡銆備負浜嗗尯鍒紝浜轟滑鎶婃棭鍏堢殑榪欐湰縐頒負“緇塊緳涔?#8221;錛岃屽悗鏉ュ悕澹版洿澶х殑榪樻槸“綰㈤緳涔?#8221;銆備粠緇塊緳鍒扮孩榫欙紝浠庢掕鍒頒氦鎵嬶紝涔熻灝侀潰涓婄殑鍐茬獊紼嬪害涔熶綋鐜頒簡緙栬瘧鍣ㄩ鍩熺殑鐮旂┒榪涘睍鍚с?nbsp;


==================================================================
涓婇潰鏄綉涓婂灞犻緳瀹濅功鐨勮瘎浠鳳紝涔熸槸鎸烘湁閬撶悊鐨勶紝鎴戜滑鐜板湪灝辨槸閭d釜甯︾潃鐩旂敳鐨勯獞澹櫆锝烇綖锝烇綖錛屽搱鍝?br>鑰冨ぇ瀹朵竴涓棶棰橈紝涓轟粈涔堥獞澹墜閲屾嬁鐨勬槸LALR瀹濆墤鍛紵鑰屼笉鏄疞R(0)鍛紵
鍝堝搱鍝?br>

鑿婇Θ 2008-05-30 00:27 鍙戣〃璇勮
]]>
鑷簳鍚戜笂vs.鑷《鍚戜笅http://m.shnenglu.com/Plator/archive/2008/05/30/51535.html鑿婇Θ鑿婇ΘThu, 29 May 2008 16:16:00 GMThttp://m.shnenglu.com/Plator/archive/2008/05/30/51535.htmlhttp://m.shnenglu.com/Plator/comments/51535.htmlhttp://m.shnenglu.com/Plator/archive/2008/05/30/51535.html#Feedback3http://m.shnenglu.com/Plator/comments/commentRss/51535.htmlhttp://m.shnenglu.com/Plator/services/trackbacks/51535.html鍒氬瀹岃繖涓ょ鍒嗘瀽鏂規(guī)硶錛岃涓や釜鏁呬簨鎬葷粨涓涓嬶細

鏌愭棩灝忔槑涓婃暟瀛﹁錛屼粬鐨勮佸笀緇欎簡寰堝涓笉鍚岀殑鐩磋涓夎鏉胯灝忔槑鐢ㄥ昂瀛愬幓閲忎笁瑙掓澘鐨勪笁涓竟錛屽茍灝嗛暱搴﹁褰曚笅鏉ャ備袱涓皬鏃惰繃鍘伙紝灝忔槑瀹屾垚浠誨姟錛屾妸鏁版嵁鎷跨粰鑰佸笀銆傝佸笀緇欎粬璇達紝榪樻湁涓涓換鍔″氨鏄瀵熶笁鏉¤竟涔嬮棿鐨勬暟閲忓叧緋匯傚張鏄袱涓皬鏃訛紝鑱槑鐨勫皬鏄庤繛韞﹀甫璺寵蛋榪涗簡鍔炲叕瀹わ紝璇達細“鑰佸笀錛屾垜鎵懼埌浜嗭紝涓夋潯杈逛箣涓湁涓ゆ潯錛屽畠浠殑騫蟲柟鍜岀害絳変簬鍙﹀涓鏉$殑騫蟲柟銆?#8221;鑰佸笀鎷嶆媿灝忔槑鐨勫ご錛?#8220;浣犱粖澶╁浼氫簡涓涓畾鐞嗭紝鍕捐偂瀹氱悊銆傚畠?yōu)鏄鐩磋涓夎迮炴湁涓よ竟邈^鏂瑰拰絳変簬絎笁杈圭殑騫蟲柟鍜?#8221;銆?/span>

鍙︿竴涓晠浜嬶紝鏌愭棩鑰佸笀鍛婅瘔灝忔槑“浠婂ぉ瑕佹暀浣犱竴涓畾鐞嗭紝鍕捐偂瀹氱悊銆?#8221;灝忔槑璇達紝“浠涔堟槸鍕捐偂瀹氱悊鍛紵”“鍕捐偂瀹氱悊鏄錛岀洿瑙掍笁瑙掑艦涓湁涓ゆ潯杈圭殑騫蟲柟鍜岀瓑浜庣涓夎竟鐨勫鉤鏂廣?#8221;鐒?st1:personname w:st="on" ProductID="鍚?>鍚?/st1:personname>鑰佸笀緇欎簡涓澶у爢鐩磋涓夎鏉跨粰灝忔槑錛岃浠栧幓楠岃瘉銆備袱涓皬鏃跺悗錛屽皬錛夈?/span>

涓や釜鏁呬簨鍒氬ソ鏄娉曞垎鏋愰噷闈㈠搴旂殑涓や釜鏂規(guī)硶錛氱涓涓晠浜嬭鐨勬槸鑷簳鍚戜笂鐨勫垎鏋愭柟娉曪紝絎簩涓晠浜嬭鐨勬槸鑷《鑰屼笅鐨勫垎鏋愭柟娉曘傚洖鍒拌紼嬬殑鍐呭錛岀敤涓や釜渚嬪瓙璇存槑榪欎釜闂錛?/span>

璁炬煇璇█鐨勬枃娉曟槸錛?/span>

錛?/span>1錛?/span>E E+n             錛?/span>2錛?/span>E n

鍒嗘瀽杈撳叆涓詫細n+n+n

鑷簳鍚戜笂鐨勫垎鏋愭濇兂錛?/span>

浠庡乏鍒板彸鐪嬪緟鍒嗘瀽涓詫細

鍏堟槸n錛岀敱錛?/span>2錛夋娊璞′負E錛涚戶緇+銆?/span>n錛屽緱鍒?/span>E+n錛岀敱錛?/span>1錛夋娊璞′負E錛涚戶緇?/span>+n錛屾湁E+n錛屽皢涓?/span>E+n鎶借薄涓?/span>E銆傜敱浜庤緭鍏ヤ負絀猴紝鎴愬姛鍒嗘瀽錛?/span>

 

鑷《鍚戜笅鐨勫垎鏋愭濇兂錛?/span>

浠庡乏寰鍙寵瀵熶覆錛屽垎鏋愶紙鎺ㄥ錛夎繃紼嬩負錛?/span>

E => E+n                                   ( using (1) )

 => E+n+n                          ( using (1) )

 => n+n+n                         ( using (2) )

鎺ㄥ緇撴潫錛屽垎鏋愭垚鍔燂紒

璇ユ帹瀵艱繃紼嬪埄鐢ㄤ簡鏈宸︽帹瀵箋?/span>

 

涓ょ鍒嗘瀽鏂規(guī)硶鐨勬牴鏈尯鍒槸錛氳嚜搴曞悜涓婄殑鍒嗘瀽錛屼粠鍏蜂綋鍒版娊璞★紱鑷《鍚戜笅鐨勫垎鏋愶紝浠庢娊璞″埌鍏蜂綋銆備袱縐嶅垎鏋愭濊礬鎭版伆鍙堟槸鍝插鎬濊冮棶棰樼殑涓ゅぇ鏂瑰悜銆傝綆楁満縐戝涓庡摬瀛︽伆濂藉湪姝ょ粨鍚堣搗鏉ャ傝綆楁満縐戝鎬濊冮棶棰樻湁寰堝鏃跺欐槸涓庡摬瀛︾浉綾諱技錛屼笂榪板氨鏄竴涓緥璇併?/span>



鑿婇Θ 2008-05-30 00:16 鍙戣〃璇勮
]]>
絎竴嬈′嬌鐢╢lexhttp://m.shnenglu.com/Plator/archive/2008/05/28/51366.html鑿婇Θ鑿婇ΘWed, 28 May 2008 02:47:00 GMThttp://m.shnenglu.com/Plator/archive/2008/05/28/51366.htmlhttp://m.shnenglu.com/Plator/comments/51366.htmlhttp://m.shnenglu.com/Plator/archive/2008/05/28/51366.html#Feedback2http://m.shnenglu.com/Plator/comments/commentRss/51366.htmlhttp://m.shnenglu.com/Plator/services/trackbacks/51366.html緇忚佸笀浠嬬粛錛岃屼笖鏈榪戣繘琛屽疄楠屼簩錛堝皢姝e垯琛ㄨ揪寮忚漿鎹負DFA錛岀劧鍚庤漿鎹負浠g爜錛涙兂鍋氫竴涓被浼間簬flex鐨勮蔣浠訛級瑙夊緱flex寰堝濡欙紝杈撳叆涓涓鍒欒〃杈懼紡灝辮兘澶熻緭鍑哄搴旂殑鎵弿紼嬪簭錛岃繖涔熷紑濮嬬湡姝d綋鐜拌佸笀璇寸殑鑷姩鍖栥傛垜涓鐩村璁$畻鏈虹殑涓涓粓鏋侀棶棰橈紙“浠涔堣兘澶熻鏈夋晥鍦拌嚜鍔ㄥ寲”錛夊緢鎰熷叴瓚o紝鍥犳鎯沖厛浠?/span>flex寮濮嬪榪欐柟闈㈡湁鐐規(guī)劅鎬х殑璁よ瘑錛?/span>

鍦ㄧ綉涓婃悳绱?/span>flex錛屽畨瑁?/span>flex錛屽厛涓嬭澆flex錛堝師鏈墦綆楁斁涓婃潵鐨勶紝浣嗘槸鑰冭檻鍒扮増鏉冪殑闂錛岃繕鏄笉瑕佷簡銆傞渶瑕佺殑鏈嬪弸錛屾垜鍙互鍙戠粰浣狅級錛岀劧鍚庢寜鐓ч粯璁ょ殑姝ラ閫愭瀹夎銆?/span>

瀹夎鍚庯紝璁劇疆鐜鍙橀噺錛屽皢Path鎸囧悜flex.exe鎵鍦ㄧ殑鏂囦歡澶癸紙鏈満涓婁負錛?/span>C:\Program Files\GnuWin32\bin錛屼竴鑸寜榛樿鏂瑰紡瀹夎鍚?/span>flex.exe閮藉湪璇ユ枃浠跺す鍐咃級錛屽叿浣撴楠わ細

→瀵?#8220;鎴戠殑鐢?shù)鑴?#8221;鍥炬爣鎸夊彸閿?#8594;閫夋嫨“灞炴?#8221;→閫夋嫨“楂樼駭”→鍗曞嚮“鐜鍙橀噺”→鍦?#8220;緋葷粺鍙橀噺”涓煡鎵?/span>Path欏癸紝騫墮夋嫨涔?#8594;鎸?#8220;緙栬緫”→鍦?#8220;鍙橀噺鍊?#8221;鐨勬渶鍚庝竴欏規(guī)坊鍔?#8220;;C:\Program Files\GnuWin32\bin”錛屾寜紜畾瀹屾垚銆?/span>


鏈榪戞垜鏄厛浠庤鏈?/span>TINY璇█寮濮嬶紝TINY璇█鐨?/span>lex鏂囦歡鍦ㄦ簮浠g爜鐨?/span>LEX鏂囦歡澶瑰唴

1.       鍦?/span>tiny.l鐨勬渶鍚庢坊鍔狅細

int yywrap()

{

return 1;

}

鐢ㄦ潵緇撴潫鎵弿

2.       鍦?/span>console涓婅緭鍏?/span>flex tiny.l錛岀敓鎴?/span>lex.yy.c錛屽皢鍏舵浛鎹?/span>scan.c錛岀紪璇戦摼鎺ョ敓鎴?/span>tiny鐨勭紪璇戝櫒銆?/span>

 

鍙傝冩枃鐚細

http://course.cugnc.com/bianyi/shiyan/CHAPTER/f1.htm

http://blog.csdn.net/litchh/archive/2004/07/14/40983.aspx

http://www.cnscn.org/read.php?tid-10862.html



鑿婇Θ 2008-05-28 10:47 鍙戣〃璇勮
]]>
MFC涓嶭EX 緇撳悎瑕佹敞鎰忕殑闂http://m.shnenglu.com/Plator/archive/2008/05/24/50983.html鑿婇Θ鑿婇ΘSat, 24 May 2008 15:33:00 GMThttp://m.shnenglu.com/Plator/archive/2008/05/24/50983.htmlhttp://m.shnenglu.com/Plator/comments/50983.htmlhttp://m.shnenglu.com/Plator/archive/2008/05/24/50983.html#Feedback0http://m.shnenglu.com/Plator/comments/commentRss/50983.htmlhttp://m.shnenglu.com/Plator/services/trackbacks/50983.html鐢變簬flex寰寰涓烘垜浠敓鎴愮殑鏄?/span>C浠g爜錛?/span>lex.yy.c錛夛紝鑰屽疄闄呬笂鎴戜滑閫氬父瑕佹妸瀹冧滑搴旂敤鍒?/span>C++涓紝鐗瑰埆鏄簲鐢ㄥ埌Windows搴旂敤紼嬪簭涓潵錛屽湪MFC宸ョ▼涓嬫瀯閫犺瘝娉曞垎鏋愮▼搴忋?/span>

鎴戜滑寰寰鍙槸灝嗕駭鐢熺殑lex.yy.c鐩存帴娣誨姞鍒?/span>MFC宸ョ▼灝卞畬浜嬶紝浣嗘槸緙栬瘧鏃訛紝鐢變簬鍚勭鍚勬牱鐨勫師鍥狅紝鑰屼駭鐢熷ぇ閲忕殑璇硶閿欒錛岄毦浠ヤ慨鏀廣傛湰浜烘渶榪戝湪MFC涓嬫瀯閫犱竴涓墿鍏?/span>TINY璇█鐨勮瘝娉曞垎鏋愪篃鏄亣鍒頒簡涓浜涢棶棰橈紝鏌ラ槄浜嗗ぇ閲忚祫鏂欙紙宸茬粡灝嗕富瑕佺殑鍙傝冭祫鏂欐斁鍒?/span>lex瀛︿範鏍忕洰涓婏紝璇風湅錛?a href="http://m.shnenglu.com/Plator/category/7159.html">http://m.shnenglu.com/Plator/category/7159.html錛夛紝鑰楄垂浜嗘垜涓ゅぉ鐨勬椂闂磋В鍐寵繖浜涢棶棰樸傚洜姝ゆ垜鎯沖啓鏈枃錛屽皢鎶婁竴浜涙敞鎰忛棶棰樺彊榪板涓嬶紝甯屾湜瀵逛竴浜涙湅鍙嬫湁鎵甯姪銆?/span>

 

1.       瑕佸皢lex.yy.c鏀逛負CPP鏂囦歡錛?/span>lex.yy.cpp銆傚洜涓?/span>MFC鏄?/span>C++宸ョ▼錛岃嫢涓嶄慨鏀瑰垯浼氬嚭鐜伴敊璇紱

2.       灝?/span>#include <stdio.h>鏀逛負#include <stdafx.h>錛屼笉鐒朵細鍑虹幇濡備笅閿欒錛?/span>unexpected end of file while looking for precompiled header directive錛?/span>

3.       灝?/span>flex瀹夎鐩綍涓?/span>include鏂囦歡澶圭殑unistd.h娣誨姞鍒?/span>MFC宸ョ▼鍐咃紝騫朵慨鏀?/span>#include <unistd.h>錛屼負#include "unistd.h"銆傚洜涓?/span>unistd.h鏂囦歡涓畾涔変簡璇嶆硶鍒嗘瀽闇瑕佺敤鍒頒竴浜涘ご鏂囦歡銆?/span>

4.       濡傛灉lex婧愭枃浠墮渶瑕佺敤input璇誨彇瀛楃錛屽垯搴旇鎹㈢敤yyinput錛屽洜涓?/span>input浼氫笌C++涓殑嫻佸悕璇嶉噸澶嶏紝浼氬嚭鐜扮紪璇戦敊璇紱

5.       娉ㄦ剰涓浜?/span>I/O渚嬬▼鐨勫簲鐢紝鍏蜂綋璇瘋錛?a href="http://m.shnenglu.com/Plator/archive/2008/05/24/50940.html">http://m.shnenglu.com/Plator/archive/2008/05/24/50940.html

 

鍙槸鐭煭鍑犱釜閿欒錛屼絾鏄В鍐崇殑榪囩▼鍙傝冧簡澶ч噺璧勬枡錛岃櫧鐒朵笉鐭ラ亾榪欎簺璧勬枡鍑鴻嚜浣曚漢涔嬫墜錛屼絾鏄湪姝ゆ劅璋㈣繖浜涗綔鑰咃紒



鑿婇Θ 2008-05-24 23:33 鍙戣〃璇勮
]]>
Lex 鍏ラ棬 [杞澆]http://m.shnenglu.com/Plator/archive/2008/05/24/50982.html鑿婇Θ鑿婇ΘSat, 24 May 2008 15:28:00 GMThttp://m.shnenglu.com/Plator/archive/2008/05/24/50982.htmlhttp://m.shnenglu.com/Plator/comments/50982.htmlhttp://m.shnenglu.com/Plator/archive/2008/05/24/50982.html#Feedback0http://m.shnenglu.com/Plator/comments/commentRss/50982.htmlhttp://m.shnenglu.com/Plator/services/trackbacks/50982.htmlFirst!
lex紼嬪簭鐨勭粨鏋勬槸榪欐牱鐨勶紒

瀹氫箟
%%
瑙勫垯
%%
鐢ㄦ埛浠g爜

 

涓涓?Lex 紼嬪簭鍒嗕負涓変釜孌碉細絎竴孌墊槸 C 鍜?Lex 鐨勫叏灞澹版槑錛岀浜屾鍖呮嫭妯″紡錛圕 浠g爜錛夛紝絎笁孌墊槸琛ュ厖鐨?C 鍑芥暟銆?榪欎簺孌典互%%鏉ュ垎鐣屻?涓嬮潰鏄竴涓鏁頒笌瀛楁暟鐨勭粺璁″伐鍏楓?/p>


        int num_lines = 0, num_chars = 0;
 %%
\n      ++num_lines; ++num_chars;
.       ++num_chars;

%%
main()
        {
        yylex();
        printf( "# of lines = %d, # of chars = %d\n",
                num_lines, num_chars );
        }

 

Second!
瀵笷irst鍐呭鐨勫洖欏?
C 鍜?Lex 鐨勫叏灞澹版槑
榪欎竴孌典腑鎴戜滑鍙互澧炲姞 C 鍙橀噺澹版槑銆傝繖閲屾垜浠皢涓哄瓧鏁扮粺璁$▼搴忓0鏄庝竴涓暣鍨嬪彉閲忥紝鏉ヤ繚瀛樼▼搴忕粺璁″嚭鏉ョ殑瀛楁暟銆傛垜浠繕灝嗚繘琛?Lex 鐨勬爣璁板0鏄庛?

瀛楁暟緇熻紼嬪簭鐨勫0鏄?/p>

       %{
        int wordCount = 0;
        %}
        chars [A-za-z\_\'\.\"]
        numbers ([0-9])+
        delim [" "\n\t]
        whitespace {delim}+
        words {chars}+
        %%

 

涓や釜鐧懼垎鍙鋒爣璁版寚鍑轟簡 Lex 紼嬪簭涓繖涓孌電殑緇撴潫鍜屼笁孌典腑絎簩孌電殑寮濮嬨?

Lex 鐨勬ā寮忓尮閰嶈鍒?
璁╂垜浠湅涓涓?Lex 鎻忚堪鎴戜滑鎵瑕佸尮閰嶇殑鏍囪鐨勮鍒欍傦紙鎴戜滑灝嗕嬌鐢?C 鏉ュ畾涔夋爣璁板尮閰嶅悗鐨勫姩浣溿傦級緇х畫鐪嬫垜浠殑瀛楁暟緇熻紼嬪簭錛屼笅闈㈡槸鏍囪鍖歸厤鐨勮鍒欍?
瀛楁暟緇熻紼嬪簭涓殑 Lex 瑙勫垯

       {words} { wordCount++; /*
        increase the word count by one*/ }
        {whitespace} { /* do
        nothing*/ }
        {numbers} { /* one may
        want to add some processing here*/ }
        %%

 
C 浠g爜
Lex 緙栫▼鐨勭涓夋錛屼篃灝辨槸鏈鍚庝竴孌佃鐩栦簡 C 鐨勫嚱鏁板0鏄庯紙鏈夋椂鏄富鍑芥暟錛夈傛敞鎰忚繖涓孌靛繀欏誨寘鎷?yywrap() 鍑芥暟銆?Lex 鏈変竴濂楀彲渚涗嬌鐢ㄧ殑鍑芥暟鍜屽彉閲忋?鍏朵腑涔嬩竴灝辨槸 yywrap銆備竴鑸潵璇達紝yywrap() 鐨勫畾涔夊涓嬩緥銆傛垜浠皢鍦?楂樼駭 Lex 涓帰璁ㄨ繖涓闂銆?
瀛楁暟緇熻紼嬪簭鐨?C 浠g爜孌?/p>

       void main()
        {
        yylex(); /* start the
        analysis*/
        printf(" No of words:
        %d\n", wordCount);
        }
        int yywrap()
        {
        return 1;
        }

 

Lex 緙栫▼鐨勫熀鏈厓绱犲氨榪欐牱鎼炲畾浜嗭紝瀹冨皢甯姪浣犵紪鍐欑畝鍗曠殑璇嶆硶鍒嗘瀽紼嬪簭銆?
Third
楂樼駭Lex
Lex 鏈夊嚑涓嚱鏁板拰鍙橀噺鎻愪緵浜嗕笉鍚岀殑淇℃伅錛屽彲浠ョ敤鏉ョ紪璇戝疄鐜板鏉傚嚱鏁扮殑紼嬪簭銆備笅琛ㄤ腑鍒楀嚭浜嗕竴浜涘彉閲忓拰鍑芥暟錛屼互鍙婂畠浠殑浣跨敤銆?璇﹀敖鐨勫垪琛ㄨ鍙傝?Lex 鎵嬪唽銆?
Lex 鍙橀噺
   yyin  FILE* 綾誨瀷銆?瀹冩寚鍚?lexer 姝e湪瑙f瀽鐨勫綋鍓嶆枃浠躲?br>   yyout FILE* 綾誨瀷銆?瀹冩寚鍚戣褰?lexer 杈撳嚭鐨勪綅緗?緙虹渷鎯呭喌涓嬶紝yyin 鍜?yyout 閮芥寚鍚戞爣鍑嗚緭鍏ュ拰杈撳嚭銆?br>   yytext 鍖歸厤妯″紡鐨勬枃鏈瓨鍌ㄥ湪榪欎竴鍙橀噺涓紙char*錛夈?br>   yyleng 緇欏嚭鍖歸厤妯″紡鐨勯暱搴︺?br>   yylineno 鎻愪緵褰撳墠鐨勮鏁頒俊鎭傦紙lexer涓嶄竴瀹氭敮鎸併傦級

Lex 鍑芥暟
   yylex() 榪欎竴鍑芥暟寮濮嬪垎鏋愩?瀹冪敱 Lex 鑷姩鐢熸垚銆?br>   yywrap() 榪欎竴鍑芥暟鍦ㄦ枃浠訛紙鎴栬緭鍏ワ級鐨勬湯灝捐皟鐢ㄣ傚鏋滃嚱鏁扮殑榪斿洖鍊兼槸1錛屽氨鍋滄瑙f瀽銆?鍥犳瀹冨彲浠ョ敤鏉ヨВ鏋愬涓枃浠躲備唬鐮佸彲浠ュ啓鍦ㄧ涓夋錛岃繖灝辮兘澶熻В鏋愬涓枃浠躲?鏂規(guī)硶鏄嬌鐢?yyin 鏂囦歡鎸囬拡錛堣涓婅〃錛夋寚鍚戜笉鍚岀殑鏂囦歡錛岀洿鍒版墍鏈夌殑鏂囦歡閮借瑙f瀽銆傛渶鍚庯紝yywrap() 鍙互榪斿洖 1 鏉ヨ〃紺鴻В鏋愮殑緇撴潫銆?br>   yyless(int n) 榪欎竴鍑芥暟鍙互鐢ㄦ潵閫佸洖闄や簡鍓?n? 涓瓧絎﹀鐨勬墍鏈夎鍑烘爣璁般?br>   yymore() 榪欎竴鍑芥暟鍛婅瘔 Lexer 灝嗕笅涓涓爣璁伴檮鍔犲埌褰撳墠鏍囪鍚庛?
鍒版涓烘錛屽彲鑳戒綘鐪嬪埌l(fā)ex紼嬪簭榪樹細鑼冩檿錛屾病鍏崇郴錛屼笅闈㈡垜浠帴鐫鏉ワ紝鍒嗘瀽涓涓被pascal璇硶鐨勬瀬綆鏋愬櫒錛?
/* 榪欎釜灝辨槸娉ㄩ噴浜?/
  /* scanner for a toy Pascal-like language */
鐢蟲槑閮ㄥ垎寮濮?br>%{ 鍐呯殑涓滆タ浼氬師灝佷笉鍔ㄥ湴鍑虹幇鍦ㄨ緭鍑烘枃浠朵腑 }%

  %{
     /* need this for the call to atof() below */
     #include <math.h>
  %}
  DIGIT    [0-9]
  ID       [a-z][a-z0-9]*
  %%
妯″紡閮ㄥ垎寮濮?
  {DIGIT}+    {
    printf( "An integer: %s (%d)\n", yytext,
    atoi( yytext ) );
  }
  {DIGIT}+"."{DIGIT}*        {
    printf( "A float: %s (%g)\n", yytext,
    atof( yytext ) );
  }
  if|then|begin|end|procedure|function        {
    printf( "A keyword: %s\n", yytext );
  }
  {ID}        printf( "An identifier: %s\n", yytext );
  "+"|"-"|"*"|"/"   printf( "An operator: %s\n", yytext );
  "{"[^}\n]*"}"     /* eat up one-line comments */
  [ \t\n]+          /* eat up whitespace */
  .           printf( "Unrecognized character: %s\n", yytext );
  %%
琛ュ厖閮ㄥ垎寮濮?
  main( argc, argv )
   int argc;
   char **argv;
  {
    ++argv, --argc;  /* skip over program name */
    if ( argc > 0 )
      yyin = fopen( argv[0], "r" );
    else
      yyin = stdin;
    yylex();
  }
鎯寵鐪熸浜嗚Вlex, [[姝e垯琛ㄨ揪寮廬] 鏄叧閿?
Four
yytext 鍖歸厤妯″紡鐨勬枃鏈瓨鍌ㄥ彉閲? 鍙互閫氳繃鍦ㄧ敵鏄庨樁孌典嬌鐢?pointer鎴?array鏉ユ帶鍒舵槸涓涓瓧絎︽寚閽堣繕鏄竴涓瓧絎︽暟緇勩傛寚閽堟ā寮忎笌鏁扮粍妯″紡鍚勬湁鐗圭偣錛屽鑷村湪yytex鐢蟲槑涓婁篃涓嶄竴鏍鳳紝鍏蜂綋璇峰弬鑰僱ex鎵嬪唽錛?
鍦ㄦā寮忛樁孌典腑

  妯″紡            鍔ㄤ綔
  [ \t]+        putchar( ' ' );
  [ \t]+$       /* ignore this token */

妯″紡閮ㄥ垎鏄鍒欒〃杈懼紡錛屽姩浣滈儴鍒嗘槸澶勭悊鏂規(guī)硶錛屽姩浣滈儴鍒嗗鏋滄椂{寮澶達紝閭d箞錛屽姩浣滃皢浼氭寔緇埌},濡傛灉鍔ㄤ綔涓嚭鐜頒簡鎷彿{},寮濮嬮噰鐢?%{ %}鏉ヨ〃紺哄姩浣滃幓鍖烘銆傚姩浣滈儴鍒嗗鏋滄椂 |,灝辮〃紺轟笌涓嬩竴鏉¤鍒欐墽琛岀浉鍚岀殑鍔ㄤ綔銆?
濂界殑錛屾垜浠潵鐪嬩竴涓洿涓哄疄鐢ㄤ竴鐐圭殑lex紼嬪簭銆?br>鎴戜滑鍏堝畾涔変笁涓姩浣?
ECHO 灝唝ytext杈撳嚭
BEGIN 寮濮嬩竴涓潯浠跺鐞嗗潡
REJECT 鎸囩ず綆鏋愬櫒瀵瑰綋鍓嶈鍒欎笉鍋氬鐞嗭紝鑰屾槸閲囩敤絎簩鍖歸厤瑙勫垯銆?
  int word_count = 0;
  %%
  frob        special(); REJECT;
  [^ \t\n]+   ++word_count;
濡傛灉frob娌℃湁REJECT鍔ㄤ綔錛宖rob灝嗕笉浼氳璁℃暟錛屽洜涓鴻В鏋愬櫒鍦ㄩ氬父鎯呭喌涓嬶紝姣忎釜琚尮閰嶇殑瀵硅薄鍙細瀵逛竴涓姩浣滅敓鏁堬紝澶氫釜REJECT涔熸槸鍏佽鐨勶紝浼氬鎵句笅涓涓渶閰嶇殑瑙勫垯鏉ュ仛澶勭悊銆傛墍浠ワ紝涓嬮潰鐨勮鍒欎細鎶婅緭鍏ョ殑"abcd"澶勭悊鍚庤緭鍑?abcdabcaba".
  %%
  a        |
  ab       |
  abc      |
  abcd     ECHO; REJECT;
  .|\n     /* eat up any unmatched character */

`yymore()' 鍛婅瘔瑙f瀽鍣ㄤ笅涓嬈″尮閰嶇殑瑙勫垯錛屾弧瓚崇殑閮ㄥ垎灝嗕細娣誨姞鍒板綋鍓峺ytext鍊煎緱鍚庨潰鑰屼笉鏄浛鎹㈠畠銆?渚嬪錛屾寚瀹氱殑杈撳叆"mega-kludge"緇忚繃涓嬮潰鐨勭▼搴忓鐞嗗悗灝嗕細杈撳嚭"mega-mega-kludge"銆?
  %%
  mega-    ECHO; yymore();
  kludge   ECHO;
絎竴涓?"mega-" 琚弧瓚沖茍涓旇緭鍑? 鐒跺悗 "kludge" 婊¤凍, 浣嗘槸騫舵病鏈夋浛鎹箣鍓嶇殑"mega-"鑰屾槸"kludge"闄勫姞鍒頒粬鐨勫悗闈紝鐒跺悗杈撳嚭鐨勫叾瀹炴槸"mega-kludge".
yymore()闇瑕佷袱浠朵簨鎯呴渶瑕佹敞鎰忋傜涓錛寉ymnore()渚濊禆浜庤〃鐜板綋鍓嶅尮閰嶉」鐨勯暱搴yleng鐨勫鹼紝鎵浠ヤ嬌鐢▂ymore涓嶅厑璁告敼鍙榶yleng鐨勫箋傜浜岋紝yymore()鐨勪嬌鐢ㄤ細浣胯В鏋愬櫒浠樺嚭涓鐐圭偣鎬ц兘鐨勪唬浠楓?
鏈墆ymore()灝辨湁yyless()
yyless(n) 榪斿洖褰撳墠鍖歸厤欏歸櫎浜嗗紑濮嬬殑n涓瓧絎﹀唴鐨勬墍鏈夌殑鍐呭鍒拌緭鍏ョ紦瀛樺尯錛岃В鏋愬櫒澶勭悊涓嬩竴涓尮閰嶆椂錛屽畠浠皢浼氳閲嶆柊瑙f瀽銆倅yless灝嗕細瀵艱嚧yytext涓巠yleng鐨勮皟鏁淬傦紙yyleng灝嗕細絳変簬=n錛?濡傝緭鍏?foobar"琚笅闈㈢殑紼嬪簭澶勭悊鍚庯紝灝嗕細杈撳嚭"boobarbar". 鍥犱負鍓峮=3涓瓧絎oo澶栫殑瀛楃bar琚噸鏂拌繑鍥炲埌杈撳叆緙撳瓨鍖轟簡銆?
  %%
  foobar    ECHO; yyless(3);
  [a-z]+    ECHO;
鍙傛暟0瀵逛簬yyless灝嗕細瀵艱嚧鏁翠釜褰撳墠鍖歸厤灝嗕細琚噸鏂拌В鏋愩傞櫎闈炰綘鏀瑰彉浜嗚В鏋愬櫒鏈潵鐨勫鐞嗘祦紼?濡備嬌鐢╞egin),榪欏皢浼氬鑷村驚鐜粨鏉熴傞渶瑕佹敞鎰忕殑鏄紝yyless鏄竴涓畯錛屽茍涓斿湪flex杈撳叆鏂囦歡涓嬌鐢紝涓嶈兘鍦ㄥ叾浠栨簮鏂囦歡涓嬌鐢ㄣ?
unput(c) 灝嗗瓧絎鏀懼洖鍒拌緭鍏ユ祦涓紝璇ュ瓧絎﹀彲浠ラ噸鏂拌瑙f瀽銆備笅闈㈢殑鍔ㄤ綔灝嗗綋鍓嶇殑鍖歸厤鍊奸檮涓婃嫭鍙峰悗閲嶆柊榪涜鍖歸厤銆?
 {
  int i;
  /* Copy yytext because unput() trashes yytext */
  char *yycopy = strdup( yytext );
  unput( ')' );
  for ( i = yyleng - 1; i >= 0; --i )
    unput( yycopy[i] );
  unput( '(' );
  free( yycopy );
 }
娉ㄦ剰: 鐢變簬姣忔unput()灝嗘寚瀹氱殑瀛楃娣誨姞鍒拌緭鍏ユ簮鐨勫紑澶達紝鎵浠ュ皢瀛楃涓叉坊鍔犲埌杈撳叆婧愬紑澶村繀欏諱粠鍚庨亾鍓嶅鐞嗐備竴涓瘮杈冮噸瑕佺殑娼滃湪闂鏄嬌鐢╱nput()鐨勬椂鍊欙紝濡傛灉閲囩敤浜?pointer鎸囬拡妯″紡淇濆瓨yytext,unput浼氱牬鍧弝ytext鐨勫唴瀹癸紝浠庢渶鍙寵竟鐨勫瓧絎﹀紑濮嬪皢浼氱牬鍧忓乏杈圭殑涓涓瓧絎︺傚鏋滃湪unput()鍚庤鐢ㄥ埌yytext,浣犻鍏堝繀欏誨鍒朵竴浠統(tǒng)ytext,鎴栬呯敤%array妯″紡鏉ヤ繚瀛榶ytext. 鏈鍚庝綘涓嶈兘鏀句竴涓狤OF鍘昏瘯鍥炬爣蹇楄緭鍏ユ祦鐨勭粨鏉熴?
input 浠庤緭鍏ユ簮涓鍙栦笅涓涓瓧絎︺備緥濡傦紝涓嬮潰鏈夌殑渚嬪瓙灝嗕細鍚冩帀C璇█娉ㄩ噴

  %%
  "/*"        {
            register int c;
            for ( ; ; )
                {
                while ( (c = input()) != '*' &&
                        c != EOF )
                    ;    /* eat up text of comment */
                if ( c == '*' )
                    {
                    while ( (c = input()) == '*' )
                        ;
                    if ( c == '/' )
                        break;    /* found the end */
                    }
                if ( c == EOF )
                    {
                    error( "EOF in comment" );
                    break;
                    }
                }
            }

娉ㄦ剰: 濡傛灉綆鏋愬櫒閲囩敤鐢–++緙栬瘧錛宨nput()琚珁yinput()鐨勬浛浠o紝鍥犱負input()涓嶤++涓殑嫻佸悕縐癷nput鍐茬獊銆?
YY_FLUSH_BUFFER 鍒鋒柊瑙f瀽鍣ㄥ唴閮ㄧ紦瀛樹互渚夸簬涓嬩竴嬈$殑鍖歸厤宸ヤ綔錛岄鍏堝畠浼氫嬌鐢╕Y_INPUT濉厖緙撳瓨鍖恒傝繖鏄氱敤yy_flush_buffer()鐨勪竴涓壒渚嬶紝灝嗕細鍦ㄥ杈撳叆緙撳瓨涓弿榪般?
yyterminate()鍙互鍦ㄥ姩浣滃唴閮ㄨ繑鍥炴弿榪板尯鍩熶腑浣跨敤錛屽畠?yōu)畣缁堟瑙f瀽鍣q惰繑鍥?緇欒В鏋愬櫒璋冪敤鑰咃紝琛ㄧず鎿嶄綔瀹屾垚銆傜己鐪佹儏鍐典笅錛屽埌杈炬枃浠剁粨鏉熶綅緗篃浼氳璋冪敤錛屽畠鏄竴涓畯錛屽茍涓斿彲鑳介噸瀹氫箟銆?/p>


Lex榪涢樁
妯″紡
妯″紡鍦ㄧ涓闃舵鎴栫浜屼釜闃舵浣跨敤錛屼篃灝辨槸鍦ㄧ敵鏄庢垨瑙勫垯闃舵涓嚭鐜幫紝妯″紡瀹氫箟浜嗗尮閰嶇殑鐩爣錛岀洰鏍囪鍖歸厤鍚庡皢浼氭墽琛屽姩浣溿?br>瀵逛簬妯″紡涓嶆兂鍋氬お澶氳鏄庯紝浣跨敤姝e垯琛ㄨ揪寮忓畾涔夛紝鍙互鍙傜湅 regex 鎴?pcre.

寮濮嬫潯浠?br>lex鎻愪緵浜嗘牴鎹潯浠舵縺媧昏鍒欑殑鏈哄埗銆傚湪<sc>鍓嶇紑鐨勮鍒欏皢浼氬湪瑙f瀽鍣ㄥ湪"sc"鐨勫紑濮嬫潯浠朵笅琚尮閰嶃?/p>

<STRING>[^"]*        { /* eat up the string body ... */            ...            }
灝嗕細鍦ㄥ惎鍔ㄦ潯浠?STRING"鐨勬儏鍐典笅琚縺媧匯?/p>

<INITIAL,STRING,QUOTE>\.        { /* handle an escape ... */            ...            }
灝嗕細鍦?"INITIAL", "STRING", "QUOTE"涓夎呬箣涓鐨勬潯浠朵笅琚縺媧匯?/p>

寮濮嬫潯浠跺湪杈撳叆婧愮殑瀹氫箟(絎竴錛夐儴鍒嗚鐢蟲槑錛屽湪‘%s' 鎴?’%x'鍚庤窡闅忕潃鍚嶅瓧鍒楄〃銆?%s鐢蟲槑浜嗗寘鍚殑寮濮嬫潯浠訛紝%x鐢蟲槑浜嗘帓浠栫殑寮濮嬫潯浠躲傚紑濮嬫潯浠惰BEGIN鍔ㄤ綔嬋媧匯傜洿鍒頒笅涓涓狟EGIN鍔ㄤ綔錛屾弧瓚沖紑濮嬫潯浠跺悕縐扮殑瑙勫垯灝嗕細琚鍒欙紝涓嶆弧瓚沖惎鍔ㄦ潯浠剁殑瑙勫垯灝嗕笉浼氳鎵ц銆?/p>


濡傛灉鏄寘鍚潯浠訛紝娌℃湁寮濮嬫潯浠剁殑瑙勫垯涔熶細琚縺媧繪墽琛岋紝濡傛灉鏃舵帓浠栨潯浠訛紝鍙湁婊¤凍寮濮嬫潯浠剁殑瑙勫垯鎵嶄細琚墽琛屻?/p>

鍏鋒湁鐩稿悓鎺掍粬鏉′歡鐨勮鍒欑殑闆嗗悎鍙互浣胯В鏋愬櫒鐙珛浜庡叾浠栫殑瑙勫垯銆傚洜姝わ紝鎺掍粬鏉′歡鍙互瀹規(guī)槗鍦板垱寤哄井鍨嬭В鏋愬櫒澶勭悊杈撳叆婧愪腑鐨勭嫭绔嬩笌鍏朵粬閮ㄥ垎鐨勪竴閮ㄥ垎錛堝錛屾敞閲婏級銆傚鏋滃浜庡寘鍚笌鎺掍粬鏉′歡榪樻湁娣鋒穯錛屽彲浠ョ湅涓嬮潰鐨勪緥瀛愩?/p>

%s example%%<example>foo   do_something();bar            something_else();
絳夊悓浜?/p>


%x example%%<example>foo   do_something();<INITIAL,example>bar    something_else();
涓婇潰鐨勭▼搴忎腑濡傛灉娌℃湁<INITIAL,example>錛屽湪example鏉′歡涓媌ar瑙勫垯灝嗘案榪滀笉浼氳嬋媧匯傚鏋滀嬌鐢?lt;example>錛屽皢浼氬鑷村彧鑳藉湪exmaple寮濮嬫潯浠朵笅嬋媧伙紝鑰孖NITIAL鏉′歡涓嬩笉浼氳嬋媧匯傝岀涓涓▼搴忎腑鍦ㄤ換浣曟潯浠朵笅bar閮借浼氭縺媧匯傚洜涓虹涓涓▼搴忕敤example鏃?s錛屾椂鍖呭惈鏉′歡銆傞〉鍙互閫氳繃鐗規(guī)畩寮濮嬫潯浠?lt;*>鏉ラ厤緗換浣曞紑濮嬫潯浠訛紝涓婇潰鐨勭▼搴忚繕鍙互鍐欎負錛?/p>

%x example%%<example>foo   do_something();<*>bar    something_else();
緙虹渷瑙勫垯錛堟樉紺轟換浣曟湭琚尮閰嶇殑瀛楃錛夊湪寮濮嬫潯浠朵笅浠嶇劧鐢熸晥銆傜瓑鍚屼簬錛?/p>

<*>.|\\n     ECHO;
‘BEGIN(0)’鍦ㄦ棤寮濮嬫潯浠剁殑瑙勫垯嬋媧繪潯浠朵笅榪斿洖鍘熷鐘舵侊紝榪欎釜鐘舵佸悓浜庡紑濮嬫潯浠朵笅鐨?INITIAL',鎵浠?#8216;BEGIN(INITIAL)'絳夊悓浜?#8217;BEGIN(0)'銆?br>BEGIN琛屼負鍦ㄨ鍒欓儴鍒嗙殑寮澶存槸榛樿鐨勪唬鐮侊紙BEGIN actions can also be given as indented code at the beginning of the rules section.璇風炕璇戯級渚嬪錛屼笅闈㈢殑浠g爜灝嗕細浠呴渶SPECIAL寮濮嬫潯浠訛紝涓嶇鍚堥倅ylex()琚皟鐢ㄥ茍涓斿叏灞鍙橀噺enter_special鏄痶rue銆?/p>

        int enter_special;%x SPECIAL%%        if ( enter_special )            BEGIN(SPECIAL);<SPECIAL>blahblahblah...more rules follow...
涓轟簡璇存槑寮濮嬫潯浠訛紝鎴戜滑鐢ㄤ袱縐嶆柟娉曞鐞?123.456".緙虹渷灝嗕細琚В鏋愪負 '123','.','456'涓変釜鏍囪錛屽鏋渆xpect-floats鍚庨潰灝嗕細琚В鏋愪負嫻偣鏁?123.456

%{#include <math.h>%}%s expect%%expect-floats        BEGIN(expect);<expect>[0-9]+"."[0-9]+      {            printf( "found a float, = %f\n",                    atof( yytext ) );            }<expect>\n           {            /* that's the end of the line, so             * we need another "expect-number"             * before we'll recognize any more             * numbers             */            BEGIN(INITIAL);            }[0-9]+      {            printf( "found an integer, = %d\n",                    atoi( yytext ) );            }"."         printf( "found a dot\n" );
涓嬮潰鐨勪唬鐮佽兘澶熸槸琚獵璇█娉ㄩ噴騫朵笖緇熻琛屾暟銆?/p>

%x comment%%        int line_num = 1;"/*"         BEGIN(comment);<comment>[^*\n]*        /* eat anything that's not a '*' */<comment>"*"+[^*/\n]*   /* eat up '*'s not followed by '/'s */<comment>\n             ++line_num;<comment>"*"+"/"        BEGIN(INITIAL);
瀹為檯涓婏紝緙栧啓楂橀熻В鏋愮▼搴忕殑鍔炴硶鏃跺湪姣忎釜瑙勫垯涓仛灝藉彲鑳藉鐨勫尮閰嶃?/p>

This scanner goes to a bit of trouble to match as much text as possible with each rule. In general, when attempting to write a high-speed scanner try to match as much possible in each rule, as it's a big win.

娉ㄦ剰: 寮濮嬫潯浠剁殑鍚嶅瓧瀹為檯涓婃椂涓涓暣褰㈠煎茍涓旇兘澶熻淇濆瓨錛屾墍浠ワ紝涓婇潰鐨勪唬鐮佸彲浠ユ墿灞曚負錛?/p>

%x comment foo%%        int line_num = 1;        int comment_caller;"/*"         {             comment_caller = INITIAL;             BEGIN(comment);             }...<foo>"/*"    {             comment_caller = foo;             BEGIN(comment);             }<comment>[^*\n]*        /* eat anything that's not a '*' */<comment>"*"+[^*/\n]*   /* eat up '*'s not followed by '/'s */<comment>\n             ++line_num;<comment>"*"+"/"        BEGIN(comment_caller);
鑰屼笖錛屽彲鑳芥槗浣跨敤YY_START瀹忔潵璁塊棶褰撳墠鐨勫紑濮嬫潯浠躲傚涓婇潰鐨勮祴鍊兼潯浠跺彲浠ユ敼鍐欎負

comment_caller = YY_START

YYSTATE鏄痀Y_START鐨勫埆鍚嶏紙鍥犱負AT&T lex浣跨敤浜哬YSTATE錛夈?br>娉ㄦ剰 寮濮嬫潯浠舵病鏈変粬浠殑鍚嶅瓧絀洪棿; %s 涓?%x 鐢蟲槑涓?#define褰㈠紡涓鏍楓?/p>

鍒拌繖閲岋紝鏃朵竴涓嬌鐢ㄦ帓浠栧紑濮嬫潯浠跺浣曞尮閰岰椋庢牸鐨勫紩鐢ㄥ瓧絎︿覆鐨勫鐞嗐傚寘鍚殑鎵╁睍鐨勮漿涔夛紝浣嗕笉鍖呮嫭媯鏌ワ紝鍥犱負浠g爜澶暱銆?/p>

%x str%%        char string_buf[MAX_STR_CONST];        char *string_buf_ptr;\"      string_buf_ptr = string_buf; BEGIN(str);<str>\"        { /* saw closing quote - all done */        BEGIN(INITIAL);        *string_buf_ptr = '\0';        /* return string constant token type and         * value to parser         */        }<str>\n        {        /* error - unterminated string constant */        /* generate error message */        }<str>\\[0-7]{1,3} {        /* octal escape sequence */        int result;        (void) sscanf( yytext + 1, "%o", &result );        if ( result > 0xff )                /* error, constant is out-of-bounds */        *string_buf_ptr++ = result;        }<str>\\[0-9]+ {        /* generate error - bad escape sequence; something         * like '\48' or '\0777777'         */        }<str>\\n  *string_buf_ptr++ = '\n';<str>\\t  *string_buf_ptr++ = '\t';<str>\\r  *string_buf_ptr++ = '\r';<str>\\b  *string_buf_ptr++ = '\b';<str>\\f  *string_buf_ptr++ = '\f';<str>\\(.|\n)  *string_buf_ptr++ = yytext[1];<str>[^\\\n\"]+        {        char *yptr = yytext;        while ( *yptr )                *string_buf_ptr++ = *yptr++;        }
閫氬父錛屽涓婇潰鐨勪緥瀛愪腑鎵鐪嬪埌浣狅紝浼氭湁璁稿鐩稿悓寮濮嬫潯浠剁殑澶勭悊銆傚紑濮嬫潯浠惰寖鍥村彲浠ョ畝鍖栭噸澶嶆搷浣溿?/p>


<SCs>{}
SCs 鏄竴涓垨寮濮嬫潯浠剁殑鍒楄〃銆傚湪榪欎釜寮濮嬫潯浠惰寖鍥村唴錛屾瘡涓鍒欏皢浼氳嚜鍔ㄥ叿鏈夊墠緙 `<SCs>' 鐩村埌 `}' 涓庡紑濮嬬殑 `{' 鍖歸厤.  渚嬪

<ESC>{    "\\n"   return '\n';    "\\r"   return '\r';    "\\f"   return '\f';    "\\0"   return '\0';}
絳変環(huán)浜?

<ESC>"\\n"  return '\n';<ESC>"\\r"  return '\r';<ESC>"\\f"  return '\f';<ESC>"\\0"  return '\0';
寮濮嬫潯浠墮〉鍙互宓屽錛屼笅闈㈡椂涓変釜綆$悊寮濮嬫潯浠跺爢鏍堢殑鍙傛暟銆?

`void yy_push_state(int new_state)'
灝嗗綋鍓嶇殑寮濮嬫潯浠跺帇鏍堬紝鍒囨崲鍒?new_state 涓庝嬌鐢?`BEGIN new_state'綾諱技銆?
`void yy_pop_state()'
浠庢爤欏跺脊鍑猴紝綾諱技浜?BEGIN.
`int yy_top_state()'
榪斿洖鏍堥《鍊鹼紝涓嶆敼鍙樻爤鍐呭銆?
寮濮嬫潯浠舵爤鍔ㄦ佸闀匡紝娌℃湁鍥哄畾闄愬埗錛屽鏋滃唴瀹圭敤灝斤紝紼嬪簭绔熶細緇堟銆?

涓轟簡浣跨敤寮濮嬫潯浠舵爤錛岄渶瑕佷嬌鐢?`%option stack' 鎸囦護銆?

 


澶氳緭鍏ョ紦瀛樺尯

 

涓浜涘厑璁竔nclude鏂囦歡瑙f瀽鍣ㄧ殑瑙f瀽鍣ㄨ姹備粠鍑犱釜杈撳叆嫻佷腑璇誨彇鍐呭銆俌Y_INPUT鍙湪緇撴潫緙撳瓨鏃惰璋冪敤錛岀鍒?include 鍚庨渶瑕佸垏鎹㈣緭鍏ユ簮錛岃岃В鏋愪竴涓弿榪頒篃璁擱渶瑕佸緢闀挎椂闂淬備負浜嗚В鍐蟲綾婚棶棰橈紝瑙f瀽鍣ㄦ彁渚涗簡鍒涘緩騫跺湪澶氫釜杈撳叆緙撳瓨涓垱寤虹殑鏈哄埗銆傝緭鍏ョ紦瀛樺彲浠ラ氳繃涓嬮潰鐨勬柟寮忓垱寤?

YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )


鍙傛暟涓轟笌緙撳瓨鍏寵仈鐨勮緭鍏ユ枃浠舵寚閽堬紝浠ュ強瓚沖鐨勫彲緇存寔size瀛楃錛堝鏋滀笉紜畾錛宻ize鍙互浣跨敤YY_BUF_SIZE)銆傝繑鍥炰竴涓猋Y_BUFFER_STATE,鍙互浼犻掑埌鍏朵粬鐨勫鐞嗚繃紼嬨俌Y_BUFFER_STATE鏄竴涓笉鍙緇撴瀯yy_buffer_state鐨勬寚閽堬紝鎵浠ュ彲浠ュ畨鍏ㄥ湴浣跨敤`((YY_BUFFER_STATE) 0)'鏉ュ垵濮嬪寲YY_BUFFER_STATE錛屽鏋滀綘鎰挎剰錛屼綘鍙互鍦ㄨВ鏋愬櫒涔嬪鐨勬簮紼嬪簭涓紩鐢ㄨ繖涓笉閫忔槑緇撴瀯鏉ユ紜殑鐢蟲槑杈撳叆緙撳瓨銆傚彲浠ラ氳繃涓嬮潰鐨勫弬鏁版潵閫夋嫨涓涓紦瀛樺尯銆?

void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )


鍒囨崲瑙f瀽鍣ㄧ殑杈撳叆緙撳瓨灝嗕細瀵艱嚧璁版帴涓嬫潵鐨勫尮閰嶉」鏉ヨ嚜浜庢柊鐨勭紦瀛樹腑銆倅y_switch_to_buffer鍙兘鍑虹幇鍦▂ywrap涓負緇х畫瑙f瀽鍋氬噯澶囷紝鏇挎崲鎵撳紑涓涓柊鐨勬枃浠跺茍鎵цyyin. 閫氳繃yy_switch_to_buffer 鎴?yywrap鍒囨崲杈撳叆婧愪笉鏀瑰彉寮濮嬫潯浠躲?

 

void yy_delete_buffer( YY_BUFFER_STATE buffer )


鐢ㄤ簬鏀跺洖涓庣紦瀛樺叧鑱旂殑絀洪棿銆備綘鍙互浣跨敤涓嬮潰鐨勫嚱鏁版竻絀哄綋鍓嶅唴瀹?

void yy_flush_buffer( YY_BUFFER_STATE buffer )


姝ゅ嚱鏁板簾寮冪紦瀛樺唴瀹癸紝涓嬩竴涓В鏋愬櫒璇曞浘鍖歸厤涓涓唴瀹規(guī)椂灝嗕細浣跨敤YY_INPUT鏉ユ洿鏂扮紦瀛樺尯銆?/p>

`yy_new_buffer()' 鏄?`yy_create_buffer()' 鐨勪竴涓埆鍚嶏紝鐢ㄤ簬鎻愪緵C++浣跨敤new 涓?delete鎿嶄綔鍒涘緩涓庨攢姣佸姩鎬佸璞$殑鍏煎鎬с?/p>

鏈鍚? YY_CURRENT_BUFFER 瀹忚繑鍥?YY_BUFFER_STATE 鎸囬拡錛岃〃紺哄綋鍓嶇殑緙撳瓨銆?/p>

榪欓噷鏄竴涓墿灞昳nclude浣跨敤鐨勪竴涓В鏋愬櫒 (`<<EOF>>' 鐗規(guī)у皢浼氬湪浠ュ悗璁ㄨ):


/* "incl" 鐘舵佺敤浜庤幏鍙杋nclude鐨勬枃浠跺悕 */
%x incl

%{
#define MAX_INCLUDE_DEPTH 10
YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
int include_stack_ptr = 0;
%}

%%
include             BEGIN(incl);

[a-z]+              ECHO;
[^a-z\n]*\n?        ECHO;

<incl>[ \t]*      /* eat the whitespace */
<incl>[^ \t\n]+   { /* got the include file name */
        if ( include_stack_ptr >= MAX_INCLUDE_DEPTH )
            {
            fprintf( stderr, "Includes nested too deeply" );
            exit( 1 );
            }

        include_stack[include_stack_ptr++] =
            YY_CURRENT_BUFFER;

        yyin = fopen( yytext, "r" );

        if ( ! yyin )
            error( ... );

        yy_switch_to_buffer(
            yy_create_buffer( yyin, YY_BUF_SIZE ) );

        BEGIN(INITIAL);
        }

<<EOF>> {
        if ( --include_stack_ptr < 0 )
            {
            yyterminate();
            }

        else
            {
            yy_delete_buffer( YY_CURRENT_BUFFER );
            yy_switch_to_buffer(
                 include_stack[include_stack_ptr] );
            }
        }


鎻愪緵涓変釜榪囩▼鏉ュ疄鐜板唴瀛樺瓧絎︿覆鑰屼笉鏄枃浠惰緭鍏ョ紦瀛樼殑瑙f瀽銆傚畠浠兘瑕佸垱寤轟竴涓緭鍏ョ紦瀛樻潵瑙f瀽瀛楃涓詫紝騫朵笖榪斿洖YY_BUFFER_STATE (鍙互鍦ㄥ畬鎴愯В鏋愬悗鐢?`yy_delete_buffer()' 鍒犻櫎).錛屼篃鍙互閫氳繃`yy_switch_to_buffer()'鏉ュ垏鎹? 涓嬩竴嬈¤皟鐢╜yylex()' 灝嗕細瑙f瀽瀛楃涓層?/p>

`yy_scan_string(const char *str)'                             瑙f瀽0緇撳熬瀛楃涓層?br>`yy_scan_bytes(const char *bytes, int len)'               瑙f瀽bytes寮濮嬬殑len涓瓧絎?鍙兘鍖呭惈 0 瀛楃)


娉ㄦ剰錛屼笂闈㈢殑涓や釜鍑芥暟浼氬垱寤哄瓧絎︿覆鎴栧瓧鑺備覆鐨勫壇鏈?榪欎篃璁告椂鏈熸湜鐨勶紝鍥犱負`yylex()' 浼氫慨鏀硅瑙f瀽緙撳瓨鐨勫唴瀹?  鍙互浣跨敤涓嬮潰鐨勬柟寮忔潵鎷掔粷浣跨敤鍓湰:

`yy_scan_buffer(char *base, yy_size_t size)'

灝嗕細浠巄ase寮濮嬭В鏋愶紝鍖呭惈size涓瓧鑺? 鏈鍚庣殑涓や釜瀛楄妭蹇呴』鏄?YY_END_OF_BUFFER_CHAR (ASCII NUL)銆備粬浠笉浼氳瑙f瀽, 瑙f瀽鑼冨洿浠?`base[0]'  鍒?`base[size-2]'錛堝寘鍚級銆傚鏋滀綘娌¤兘鎸夌収榪欑瑙勫畾浣跨敤base錛堝錛屽繕璁頒簡鏈鍚庣殑涓や釜YY_END_OF_BUFFER_CHAR瀛楄妭), `yy_scan_buffer()' 灝嗕細榪斿洖絀烘寚閽堣屼笉鍒涘緩YY_BUFFER_STATE銆倅y_size_t綾誨瀷鏄釜鏁村瀷錛屽彲浠ヨ漿鍖栦負鏁存暟鏉ュ弽鏄燽uffer鐨勯暱搴︺?/p>

 


鏂囦歡緇撴潫瑙勫垯


鐗規(guī)畩瑙勫垯 "<<EOF>>" 鍙槸瑙勫垯鍦ㄦ枃浠剁粨鏉熶綅緗彂鐢熶笖yywrap()榪斿洖闈?鍊箋?濡傦紝娌℃湁鏇村鐨勬枃浠惰澶勭悊). 榪欎釜鍔ㄤ綔蹇呴』瀹屾垚涓嬮潰鍥涗歡浜嬫儏涔嬩竴:

璧嬪肩粰yyin涓涓柊鐨勬枃浠?(鏃╂湡鐗堟湰鐨刦lex, 姝ゆ搷浣滃悗蹇呴』璋冪敤鐗規(guī)畩鍔ㄤ綔 YY_NEW_FILE; 榪欎釜鎿嶄綔宸茬粡涓嶉渶瑕佷簡);
鎵ц涓涓繑鍥炵敵鏄?
鎵ц涓涓壒孌婄殑`yyterminate()' 鍔ㄤ綔;
鎴栬呬嬌鐢╜yy_switch_to_buffer()' 鍒囨崲鍒頒竴涓柊鐨勮緭鍏ョ紦瀛樺尯.


<<EOF>> 涓嶈兘涓庡叾浠栨ā寮忎竴璧蜂嬌鐢紱瀹冧篃璁鎬粎鍦ㄥ紑濮嬫潯浠跺垪琛ㄧ敵鏄庛傚鏋滄寚瀹氫簡涓嶅悎娉?<<EOF>> 瑙勫垯, 瀹冨皢浼氬簲鐢ㄥ埌鎵鏈夌殑寮濮嬫潯浠惰屼笉浠呮槸 <<EOF>> 鍔ㄤ綔. 鎸囧畾 <<EOF>> 瑙勫垯浠呭湪 initial 寮濮嬫潯浠朵笅鍖歸厤錛屽氨鏄敤:

<INITIAL><<EOF>>


涓嬮潰鐨勮鍒欏彲浠ュ彂鐜拌薄涓嶅叧闂殑娉ㄩ噴綾葷殑闂銆?/p>

%x quote
%%

...other rules for dealing with quotes...

<quote><<EOF>>   {
         error( "unterminated quote" );
         yyterminate();
         }
<<EOF>>  {
         if ( *++filelist )
             yyin = fopen( *filelist, "r" );
         else
            yyterminate();
         }


 



鑿婇Θ 2008-05-24 23:28 鍙戣〃璇勮
]]>
Flex鍐呭瓨娉勯湶闂[杞澆]http://m.shnenglu.com/Plator/archive/2008/05/24/50981.html鑿婇Θ鑿婇ΘSat, 24 May 2008 15:25:00 GMThttp://m.shnenglu.com/Plator/archive/2008/05/24/50981.htmlhttp://m.shnenglu.com/Plator/comments/50981.htmlhttp://m.shnenglu.com/Plator/archive/2008/05/24/50981.html#Feedback0http://m.shnenglu.com/Plator/comments/commentRss/50981.htmlhttp://m.shnenglu.com/Plator/services/trackbacks/50981.html鎴戝啓浜嗕竴涓狥lex鐨勪緥瀛愭祴璇曪紝榪欎釜渚嬪瓙鑳芥妸SQL璇彞緹ゆ寜鐓у垎鍙烽殧寮錛屾斁鍏ヤ竴涓猯ist錛屽茍涓旇鍑烘瘡涓鍙QL鐨勮搗濮嬪拰緇撴潫鐨勪綅緗紝浠ュ強璇QL鐨勭被鍨嬶紝渚嬪鏄竴涓┖SQL榪樻槸鍙惈娉ㄩ噴鐨凷QL錛岃繕鏄竴涓爣鍑哠QL銆侳lex榪欎釜宸ュ叿鐢熸垚璇誨叆鍚庣紑鏄痩鐨勮瘝娉曟枃浠訛紝鐒跺悗杈撳嚭涓涓猯ex.yy.c鐨勬枃浠訛紝鎴戝啓浜嗕釜紼嬪簭嫻嬭瘯榪欎釜lex.yy.c銆傛垜鐨勭洰鏍囨槸鎶婅繖涓В鏋愬櫒鍋氭垚MFC DLL鎴栬呰兘杈撳嚭xml鐨勬爣鍑嗙▼搴忥紝榪欐牱浠ュ悗鐨勫厓鏁版嵁欏圭洰灝辮兘鐩存帴鐢ㄤ簡錛岀敋鑷寵兘閫氳繃GUI鐣岄潰澶勭悊SQL錛屼絾鏄疐lex鐢熸垚鐨?c鏂囦歡MFC紼嬪簭鏃犳硶鐩存帴浣跨敤錛岄鍏堣娉ㄩ噴鎺塩鏂囦歡涓殑#include <unistd.h>榪欎竴琛岋紝榪欒浼氭姤閿欙紝鍐嶄慨鏀筨->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;榪欎竴琛岋紝璁゜->yy_is_interactive = 0,鐒跺悗鍦ㄦ妸.c鏂囦歡鐨勭殑寮澶寸殑#include <stdio.h>鏇挎崲鎴?include <stdafx.h>錛岃繖鏍峰氨琛屼簡涔堬紵榪樹笉琛岋紝VC2003緙栬瘧榪樻槸鎶ラ敊錛屾垜榧撴崳鍗婂ぉ鎵嶅彂鐜幫紝闇瑕佹妸lex.yy.c鏂囦歡閲嶅懡鍚嶆垚lex.yy.cpp灝卞彲浠ヤ簡錛岃繖涓緋誨垪鎿嶄綔澶鏉備簡錛屾垜鍐欎簡涓涓壒澶勭悊鏂囦歡鐢熸垚cpp錛岀劧鍚庡張鍐欎簡涓涓猇C鐨勫畯鏉ヤ慨鏀規(guī)枃浠訛紝榪欐牱錛屾寜涓や笅榧犳爣涓鍒囧氨閮絆K浜嗭紝鍢垮樋錛屾噿浜哄氨鍠滄鑷姩鍖栥?br>鐒跺悗鍐欎簡綆鍗曠殑鐣岄潰杈撳叆SQL榪涜瑙f瀽錛岃В鏋愭晥鏋滀笉閿欙紝浣嗘槸榪愯鍚庡嵈鍙戠幇浜嗕袱澶勫唴瀛樻硠闇詫紝涓澶勬槸16386瀛楄妭錛屼竴澶勬槸40瀛楄妭銆傚湪榪欓噷鍏堢粰闈炵▼搴忓憳鏅強涓涓嬪唴瀛樻硠闇茬殑鐭ヨ瘑錛屼換浣曚竴涓綆楁満紼嬪簭錛屽湪榪愯鐨勬椂鍊欏瓨鏀炬暟鎹槸闇瑕佸唴瀛樼殑錛岄渶瑕佸灝戝唴瀛樻槸紼嬪簭鍚戞搷浣滅郴緇熺敵璇風殑錛岃繖鍧楀唴瀛樼敤瀹屼簡灝辨妸瀹冭繕緇欐搷浣滅郴緇燂紝鎿嶄綔緋葷粺鍙互鍐嶅垎閰嶇粰鍏朵粬紼嬪簭銆傚氨鍍忔垜浠幓楗鍚冮キ錛岄キ鑿滃氨鏄暟鎹紝鍐呭瓨灝辨槸紕楀拰紕熷瓙錛屾垜浠偣浜嗚彍鍙堢偣姹わ紝榪欐椂鍊欑涓嶅浜嗭紝鎴戜滑灝變細鍠婁竴澹幫細“鑰佹澘錛屽啀鎷夸袱涓鏉ョ洓姹?#8221;錛岃繖灝辨槸鍐呭瓨鐢寵錛岀瓑鎴戜滑鍚冨畬浜嗘姽鍢翠拱鍗曡蛋浜猴紝鏈嶅姟鍛樻敹鎷劇瀛愬拰紕楋紝榪欏氨鏄唴瀛樺洖鏀訛紝濡傛灉鎴戜滑鐪嬪埌榪欏楗鐨勭澶紓浜簡錛屼簬鏄伔鍋鋒嬁璧頒竴涓紙榪欎簨鎴戠粡甯稿共錛夛紝榪欏氨鏄唴瀛樻硠闇層傚鏋滃伔紕楃殑浜哄お澶氫簡錛岃繖瀹墮キ棣嗙殑紕楀氨涓嶅浜嗭紝浣犲啀鐢寵瑕佺鑰佹澘灝變細璇寸涓嶅浜嗭紝璇風◢絳変竴涓嬶紝浜庢槸浣犱滑鍑犱釜浜哄彧鑳界敤涓涓鍚冮キ錛屽悆鐨勫緢鎱紝榪欏氨鍙唴瀛樹笉瓚熾侰++鍜孋鐨勭▼搴忓お鐏墊椿浜嗭紝璇鋒眰紕楀拰閫佸洖紕楅兘鏄▼搴忓憳鑷繁鏉ュ仛錛屽氨鍍忎竴涓キ棣嗘病浜虹湅綆★紝瀹屽叏闈犱釜浜鴻嚜瑙夋ф潵緇存寔錛屽洜姝や笉綆℃槸姘村鉤宸篃濂斤紝鐤忓拷涔熷ソ錛孋/C++紼嬪簭浼氬緢瀹規(guī)槗浜х敓鍐呭瓨娉勯湶錛宩ava鍜孋#灝卞ソ澶氫簡錛屼粬浠氨鐩稿綋浜庨キ棣嗛棬鍙f湁鎼滆韓鐨勶紝浣犱竴涓涔熷甫涓嶈蛋銆?br>榪欓噷鎴戝彂鐜頒簡涓ゅ鍐呭瓨娉勯湶錛屼竴鍏?6KB宸﹀彸錛屼綘鍙兘浼氳鎵?6KB錛岀幇鍦ㄥ唴瀛橀兘濂藉嚑涓狦B錛岃繖涔堢偣綆椾粈涔堬紝浣嗘槸濡傛灉榪欐槸涓涓湇鍔″櫒涓婂父騫翠笉鍋滄満榪愯鐨勭▼搴忥紝鏈夊緢澶氫漢鏉ヨ闂紝浼氬緢蹇妸鍐呭瓨鍚冩帀鐨勩傝櫧鐒舵垜榪欎釜紼嬪簭涓嶆槸鏈嶅姟鍣ㄤ笂榪愯鐨勭▼搴忥紝浣嗘槸鎴戣兘瀹瑰繊紼嬪簭鐨刡ug錛屽嵈涓嶈兘瀹瑰繊鍐呭瓨娉勯湶錛屾兂褰撳勾鎴戝垰鍒氬啓C++紼嬪簭鐨勬椂鍊欙紝紼嬪簭鏈夊唴瀛樻硠闇詫紝鎴戞媧繪壘涓嶅嚭鏉ユ槸鍝噷鐨勯棶棰橈紝鏈鍚庡彧鑳藉憡璇夊鎴瘋鎴戣繖涓▼搴忚姹傚唴瀛樺錛屼綘鐨勭數(shù)鑴戦渶瑕佸鍔犲唴瀛橈紝浜庢槸瀹㈡埛澧炲姞浜嗗唴瀛橈紝浣嗗嵆浣胯繖鏍蜂篃涓嶈錛岃繕闇瑕佸崐澶滈噸鍚竴涓嬫満鍣ㄦ墠鍙互銆傚湪姝ゆ垜瀵硅瀹㈡埛琛ㄧず娣辨繁鐨勬瓑鎰忥紝浠庢鎴戝彂瑾擄紝鍐嶄篃涓嶈鎴戠殑紼嬪簭鏈変竴涓瓧鑺傜殑鍐呭瓨娉勯湶錛屼簬鏄繁灞辮嫤緇僣oding鍜岃皟璇曟妧鏈紝緇忚繃澶氬勾鐨勬蹈娣紝鑷繁鍐欑殑浠g爜鑲畾涓嶄細鏈夎繖鏍風殑閿欒浜嗭紝鑰屼笖鍒漢鐨勫澶嶆潅鐨勯棶棰樹唬鐮佹垜鎷胯繃鏉ュ氨璋冭瘯錛屽氨璺熼キ绔繃鏉ュ氨鍚冧竴鏍積asy銆?br>榪欏洖鐨勯棶棰樻垜璁や負寰坋asy錛岃皟璇曞憲錛屼竴寮濮嬩互涓烘槸list鏈夐棶棰橈紝榪欐槸寰堝鏄撳嚭闂鐨勫湴鏂癸紝CList鏄竴涓ā鏉跨被錛岀敤浜嗗ソ澶氬勾浜嗭紝濂界敤閲忓張瓚籌紝鎴戜滑涓鐩寸敤瀹冿紝浣嗘槸CList閲岄潰濡傛灉鏀懼叆鎸囬拡鐨勮瘽灝辮娉ㄦ剰浜嗭紝綆鍗曠殑Removeall鏄笉琛岀殑錛岃繕闇瑕佷竴涓竴涓殑delete鎺夐噷闈㈢殑瀵硅薄鎸囬拡錛屾垜璺熻釜浜嗕竴閬嶏紝涓嶆槸瀹冪殑闂錛屾瘡嬈″唴瀛樻硠闇茬殑澶у皬閮芥槸閭d箞澶氾紝涓巐ist鐨勫ぇ灝忔病鍏崇郴銆傞毦閬撴槸鎴戝啓鐨凜SQLSet鍜孋SQLNode榪欎袱涓被鏈夐棶棰橈紵浠旂粏鏌ヤ簡涓閬嶄篃娌¢棶棰橈紝濂囦簡鎬簡錛岄毦閬撴槸lex.yy.c涓嶈兘鍜孧FC娣峰湪涓璧風敤錛屾垜鏈夋妸榪欎釜紼嬪簭鎷嗗嚭鏉ワ紝鐢ㄧ函c鍋氫簡涓閬嶏紝鏋滅劧娌℃姤鍛婂唴瀛樻硠闇詫紝濂藉儚鏄棶棰樿В鍐充簡銆備絾鏄垜濡傛灉綆鍗曠殑鍦ㄧ▼搴忛噷闈㈢敤MFC CString綾伙紝灝變細鎶ュ憡娉勯湶錛孋String榪欐洿鏄箙緇忚冮獙鐨勫叡浜т富涔夋垬澹紝涓嶅彲鑳芥湁闂鐨勶紝澶護浜哄洶鎯戜簡錛屽悗鏉ラ氳繃鑹拌嫤鐨勫唴瀛樻鏌ュ彂鐜幫紝鍏跺疄綰痗鐨勭▼搴忎篃鏈夊唴瀛樻硠闇詫紒鍙笉榪嘨C2003娌℃湁鎶ュ憡緗簡錛岃繖綆鐩存槸VC鐨勪竴涓ぇbug錛佽繖澶鎴戝け鏈涗簡錛屼互鍓嶇敤VC6鎴戞瘮杈冨枩嬈umega鐨勮皟璇曟彃浠訛紝瀹冭兘鍙戠幇姣旇緝闅愮鐨刡ug鍜屾硠闇詫紝浣嗘槸VC2003鎴戣寰楀簲璇ヤ笉閿欎簡錛屽氨娌″幓鎵捐繖鏍風殑鎻掍歡錛屾病鎯沖埌鍟婃病鎯沖埌錛屽井杞繕鏄拷鎮(zhèn)犱簡鎴戜竴涓嬨?br>鐜板湪闂灝遍泦涓湪Flex鐢熸垚鐨刲ex.yy.c涓婁簡錛岃繖涓▼搴忓緢闀匡紝濂藉嚑鍗冭錛岃屼笖浣滆呰偗瀹氭槸C鐨勯珮鎵嬶紝寰堝鍦版柟娌$湅鎳傦紝澶墰浜嗭紝鎴戜粠澶村埌灝懼ぇ姒傛祻瑙堜竴閬嶏紝閲岄潰濂藉嚑澶勭敵璇蜂簡鍐呭瓨錛屽彲鑳藉氨鏄畠浠殑闂錛屼絾鏄繖紼嬪簭澶鏉備簡鏃犳硶涓嬫墜鍟婏紝閮侀椃涔嬩腑涓婄綉google錛岃緭鍏lex memory leak錛岀粨鏋滃彂鐜頒簡Adobe鏈変竴涓駭鍝佷篃鍙獸lex錛岃屼笖涔熸湁鍐呭瓨娉勯湶闂錛屾垜鍊掞紝浠涔堜笘閬撳晩錛屾垜鍙堝姞鍏ュ叧閿瓧lex.yy.c錛岃繖鍥炴悳鍑烘潵鐨勫浜嗭紝鍘熸潵涓嶆涓涓漢鍙戠幇浜嗚繖涓棶棰橈紝寰堝浜洪兘鍦ㄦ姤鍛婅繖涓棶棰橈紝浣嗘槸璁ㄨ閮芥病緇撴灉錛屾壘鍒癋lex鐨勮佸sourceforge.net錛屾墦綆楁姇璇変竴涓嬩綔鑰咃紝鐪嬪埌涓婇潰鏈夎璁猴紝鍙堟悳绱簡涓涓嬶紝浣滆呴拡瀵瑰唴瀛樻硠闇茬殑闂璇翠簡錛屽浜庡埗浣滆В鏋愰潪C鐨勮В鏋愬櫒鏉ヨ錛屽彲鑳戒細鏈夋硠闇查棶棰橈紝瑙e喅鐨勬柟妗堟槸鍦ㄤ綘鐪熺殑鍑嗗緇撴潫瑙f瀽鐨勬椂鍊欏姞涓婅繖涓ゅ彞浠g爜錛?br>yy_delete_buffer(YY_CURRENT_BUFFER);
yy_init = 1;
鎴戝姞涓婁簡錛屽ソ浜嗭紝鍥版壈鎴戜袱澶╃殑闂瑙e喅浜嗭紝榪欎笅涓栫晫娓呴潤浜嗐備絾鏄湅鍒板叾浠栫殑甯栧瓙璇碆ison涔熶細鏈夊唴瀛樻硠闇詫紝鍓嶉潰鐨勮礬榪樺緢闀褲?

鑿婇Θ 2008-05-24 23:25 鍙戣〃璇勮
]]>
Lex涓璉/O渚嬬▼鐨勮В閲?/title><link>http://m.shnenglu.com/Plator/archive/2008/05/24/50940.html</link><dc:creator>鑿婇Θ</dc:creator><author>鑿婇Θ</author><pubDate>Sat, 24 May 2008 04:05:00 GMT</pubDate><guid>http://m.shnenglu.com/Plator/archive/2008/05/24/50940.html</guid><wfw:comment>http://m.shnenglu.com/Plator/comments/50940.html</wfw:comment><comments>http://m.shnenglu.com/Plator/archive/2008/05/24/50940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/Plator/comments/commentRss/50940.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Plator/services/trackbacks/50940.html</trackback:ping><description><![CDATA[Lex鍏佽鐩存帴浣跨敤I/O渚嬬▼銆傚畠浠槸錛? <ol> <li> <div align=justified><strong><em>input()</em></strong>錛岃繑鍥炰笅涓涓緭鍏ュ瓧絎︼紱 </div> <li> <div align=justified><strong><em>output(c)</em></strong>錛屽皢瀛楃c鍐欏叆杈撳嚭 </div> <li> <div align=justified><strong><em>unput(c)</em></strong>錛屽皢瀛楃c鍘嬪洖杈撳叆嫻侊紝涓嬫<strong><em>input()</em></strong>鏃惰璇誨嚭銆?</div> </li> </ol> <p>榪欎簺渚嬬▼閮芥湁榛樿鐨勫畯瀹氫箟錛屼絾鏄敤鎴峰彲浠ラ噸鍐欏畠浠互閫傚簲涓嶅悓鐨勯渶姹傘傝繖浜涗緥紼嬪畾涔変簡澶栭儴鏂囦歡鍜屽唴閮ㄥ瓧絎︿箣闂寸殑鍏崇郴錛屽茍涓斿彧鑳藉悓鏃跺瓨鍦ㄦ垨鏇存敼銆傚畠浠彲浠ヨ閲嶅啓浣垮緱杈撳叆鎴栬呰緭鍑鴻瀹氬悜鍒扮壒孌婄殑浣嶇疆錛屽寘鎷叾浠栫殑紼嬪簭鎴栬呭唴瀛橈紱浣嗘槸瀛楃闆嗙殑浣跨敤蹇呴』鍦ㄦ暣涓緥紼嬩腑淇濇寔緇熶竴錛?strong><em>input</em></strong>蹇呴』榪斿洖0浠ヨ〃紺烘枃浠剁粨鏉燂紱<strong><em>unput</em></strong>鍜?strong><em>input</em></strong>涔嬮棿鐨勫叧緋誨繀欏諱繚鐣欙紝鍚﹀垯Lex涓嶈兘瀹屾垚鍚戝墠鎼滅儲鐨勬搷浣溿侺ex鍦ㄤ笉闇瑕佺殑鏃跺欎笉浼氬悜鍓嶆悳绱紝浣嗘槸姣忎竴涓互+*?$緇撳熬鐨勩佹垨鑰呭惈鏈?鐨勮鍒欓渶瑕佽繖涓姛鑳姐傚悓鏍鳳紝褰撲竴涓〃杈懼紡鏄彟涓涓殑鍓嶇紑鏃訛紝鍚戝墠鎼滅儲涔熸槸蹇呬笉鍙皯鐨勩傚弬闃呬笅鏂囦腑鏈夊叧Lex浣跨敤鐨勫瓧絎﹂泦鐨勮璁恒傞粯璁ょ殑Lex搴撲嬌鐢?00涓瓧絎︿綔涓哄鐢ㄩ檺鍒躲?</p> <br>錛堜絾鏄繖浜涘湪C++涓技涔庡瓨鍦ㄩ棶棰橈紝鎴戜篃姝e湪璋冭瘯錛? <img src ="http://m.shnenglu.com/Plator/aggbug/50940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Plator/" target="_blank">鑿婇Θ</a> 2008-05-24 12:05 <a href="http://m.shnenglu.com/Plator/archive/2008/05/24/50940.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>緙栬瘧鍘熺悊璇炬湰浠g爜鐨勪嬌鐢ㄨ鏄?/title><link>http://m.shnenglu.com/Plator/archive/2008/05/14/49807.html</link><dc:creator>鑿婇Θ</dc:creator><author>鑿婇Θ</author><pubDate>Wed, 14 May 2008 04:40:00 GMT</pubDate><guid>http://m.shnenglu.com/Plator/archive/2008/05/14/49807.html</guid><wfw:comment>http://m.shnenglu.com/Plator/comments/49807.html</wfw:comment><comments>http://m.shnenglu.com/Plator/archive/2008/05/14/49807.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.shnenglu.com/Plator/comments/commentRss/49807.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Plator/services/trackbacks/49807.html</trackback:ping><description><![CDATA[     鎽樿: 鎴戜滑璇劇▼鐨勫疄楠?灝嗚鐢ㄥ埌榪欎簺浠g爜錛屽洜姝ゆ湰鏂囨棬鍦ㄨ窡澶у璇存槑濡備綍浣跨敤榪欎簺浠g爜鏋勯犱竴涓紪璇戝櫒銆?nbsp; <a href='http://m.shnenglu.com/Plator/archive/2008/05/14/49807.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/Plator/aggbug/49807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Plator/" target="_blank">鑿婇Θ</a> 2008-05-14 12:40 <a href="http://m.shnenglu.com/Plator/archive/2008/05/14/49807.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍒ゆ柇杈撳叆鏄惁涓烘紜牸寮忕殑姝e垯琛ㄨ揪寮?/title><link>http://m.shnenglu.com/Plator/archive/2008/04/15/47088.html</link><dc:creator>鑿婇Θ</dc:creator><author>鑿婇Θ</author><pubDate>Mon, 14 Apr 2008 16:09:00 GMT</pubDate><guid>http://m.shnenglu.com/Plator/archive/2008/04/15/47088.html</guid><wfw:comment>http://m.shnenglu.com/Plator/comments/47088.html</wfw:comment><comments>http://m.shnenglu.com/Plator/archive/2008/04/15/47088.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/Plator/comments/commentRss/47088.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Plator/services/trackbacks/47088.html</trackback:ping><description><![CDATA[鍐欏嚭姝e垯琛ㄨ揪寮忕殑鏂囨硶瑙勫垯錛? <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">rexp </font></span><span>→</span><span lang=EN-US><font face="Times New Roman"> rexp'|'T1 | T1</font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">T1 </font></span><span>→</span><span lang=EN-US><font face="Times New Roman"> T1' 'T2 | T2</font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">T2 </font></span><span>→</span><span lang=EN-US><font face="Times New Roman"> T2* | T3</font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">T3 </font></span><span>→</span><span lang=EN-US><font face="Times New Roman"> (rexp) | letter</font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">letter = [a-zA-Z]</font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman"> </font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span>鍒╃敤璇炬湰</span><span lang=EN-US><font face="Times New Roman">P119</font></span><span>欏電▼搴忔竻鍗?/span><span lang=EN-US><font face="Times New Roman">4-3</font></span><span>鐨勭畻娉曪紝娑堥櫎涓婅堪瑙勫垯涓殑宸﹂掑綊錛岀粨鏋滃涓嬶細</span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">rexp </font></span><span>→</span><span lang=EN-US><font face="Times New Roman"> T1exp'</font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">exp' </font></span><span>→</span><font face="Times New Roman"> <span lang=EN-US>'|' T1<font style="COLOR: #000000" color=#ff0000>rexp'</font> | </span></font><span>ε</span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">T1 </font></span><span>→</span><span lang=EN-US><font face="Times New Roman"> T2T1'</font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">T1' </font></span><span>→</span><font face="Times New Roman"> <span lang=EN-US>' 'T2T1' | </span></font><span>ε</span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">T2 </font></span><span>→</span><span lang=EN-US><font face="Times New Roman"> T3T2'</font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">T2' </font></span><span>→</span><span lang=EN-US><font face="Times New Roman"> *T2'|</font></span><span>ε</span></p> <p style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><font face="Times New Roman">T3 </font></span><span>→</span><span lang=EN-US><font face="Times New Roman"> (rexp) | letter</font></span></p> <p style="MARGIN: 0cm 0cm 0pt"><span>鏍規(guī)嵁涓婅堪瑙勫垯涔﹀啓紼嬪簭錛?br><br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000"> flag;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> formula[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">];<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> rexp();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> rexp1();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t1();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t11();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t2();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t21();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t3();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> match(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> expectedToken);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> error()<br><img id=Codehighlighter1_169_233_Open_Image onclick="this.style.display='none'; Codehighlighter1_169_233_Open_Text.style.display='none'; Codehighlighter1_169_233_Closed_Image.style.display='inline'; Codehighlighter1_169_233_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_169_233_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_169_233_Closed_Text.style.display='none'; Codehighlighter1_169_233_Open_Image.style.display='inline'; Codehighlighter1_169_233_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_169_233_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_169_233_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">IS NOT A REGULAR EXPRESSION!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    exit(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> match(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> expectedToken)<br><img id=Codehighlighter1_267_347_Open_Image onclick="this.style.display='none'; Codehighlighter1_267_347_Open_Text.style.display='none'; Codehighlighter1_267_347_Closed_Image.style.display='inline'; Codehighlighter1_267_347_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_267_347_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_267_347_Closed_Text.style.display='none'; Codehighlighter1_267_347_Open_Image.style.display='inline'; Codehighlighter1_267_347_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_267_347_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_267_347_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(formula[i]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">expectedToken)<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">get the next token</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        error();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> rexp()<br><img id=Codehighlighter1_362_381_Open_Image onclick="this.style.display='none'; Codehighlighter1_362_381_Open_Text.style.display='none'; Codehighlighter1_362_381_Closed_Image.style.display='inline'; Codehighlighter1_362_381_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_362_381_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_362_381_Closed_Text.style.display='none'; Codehighlighter1_362_381_Open_Image.style.display='inline'; Codehighlighter1_362_381_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_362_381_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_362_381_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    t1();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    rexp1();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> rexp1()<br><img id=Codehighlighter1_397_479_Open_Image onclick="this.style.display='none'; Codehighlighter1_397_479_Open_Text.style.display='none'; Codehighlighter1_397_479_Closed_Image.style.display='inline'; Codehighlighter1_397_479_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_397_479_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_397_479_Closed_Text.style.display='none'; Codehighlighter1_397_479_Open_Image.style.display='inline'; Codehighlighter1_397_479_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_397_479_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_397_479_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(formula[i]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_421_477_Open_Image onclick="this.style.display='none'; Codehighlighter1_421_477_Open_Text.style.display='none'; Codehighlighter1_421_477_Closed_Image.style.display='inline'; Codehighlighter1_421_477_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_421_477_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_421_477_Closed_Text.style.display='none'; Codehighlighter1_421_477_Open_Image.style.display='inline'; Codehighlighter1_421_477_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span id=Codehighlighter1_421_477_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_421_477_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        match(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        t1();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        rexp1();        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">update by Plator</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">    }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t1()<br><img id=Codehighlighter1_492_509_Open_Image onclick="this.style.display='none'; Codehighlighter1_492_509_Open_Text.style.display='none'; Codehighlighter1_492_509_Closed_Image.style.display='inline'; Codehighlighter1_492_509_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_492_509_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_492_509_Closed_Text.style.display='none'; Codehighlighter1_492_509_Open_Image.style.display='inline'; Codehighlighter1_492_509_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_492_509_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_492_509_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    t2();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    t11();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t11()<br><img id=Codehighlighter1_523_583_Open_Image onclick="this.style.display='none'; Codehighlighter1_523_583_Open_Text.style.display='none'; Codehighlighter1_523_583_Closed_Image.style.display='inline'; Codehighlighter1_523_583_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_523_583_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_523_583_Closed_Text.style.display='none'; Codehighlighter1_523_583_Open_Image.style.display='inline'; Codehighlighter1_523_583_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_523_583_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_523_583_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(formula[i]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_547_581_Open_Image onclick="this.style.display='none'; Codehighlighter1_547_581_Open_Text.style.display='none'; Codehighlighter1_547_581_Closed_Image.style.display='inline'; Codehighlighter1_547_581_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_547_581_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_547_581_Closed_Text.style.display='none'; Codehighlighter1_547_581_Open_Image.style.display='inline'; Codehighlighter1_547_581_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span id=Codehighlighter1_547_581_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_547_581_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        match(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        t2();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        t11();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t2()<br><img id=Codehighlighter1_596_613_Open_Image onclick="this.style.display='none'; Codehighlighter1_596_613_Open_Text.style.display='none'; Codehighlighter1_596_613_Closed_Image.style.display='inline'; Codehighlighter1_596_613_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_596_613_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_596_613_Closed_Text.style.display='none'; Codehighlighter1_596_613_Open_Image.style.display='inline'; Codehighlighter1_596_613_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_596_613_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_596_613_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    t3();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    t21();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t21()<br><img id=Codehighlighter1_627_699_Open_Image onclick="this.style.display='none'; Codehighlighter1_627_699_Open_Text.style.display='none'; Codehighlighter1_627_699_Closed_Image.style.display='inline'; Codehighlighter1_627_699_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_627_699_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_627_699_Closed_Text.style.display='none'; Codehighlighter1_627_699_Open_Image.style.display='inline'; Codehighlighter1_627_699_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_627_699_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_627_699_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(formula[i]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_651_697_Open_Image onclick="this.style.display='none'; Codehighlighter1_651_697_Open_Text.style.display='none'; Codehighlighter1_651_697_Closed_Image.style.display='inline'; Codehighlighter1_651_697_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_651_697_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_651_697_Closed_Text.style.display='none'; Codehighlighter1_651_697_Open_Image.style.display='inline'; Codehighlighter1_651_697_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span id=Codehighlighter1_651_697_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_651_697_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        match(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        t21();        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">update by Plator</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">    }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> t3()<br><img id=Codehighlighter1_712_886_Open_Image onclick="this.style.display='none'; Codehighlighter1_712_886_Open_Text.style.display='none'; Codehighlighter1_712_886_Closed_Image.style.display='inline'; Codehighlighter1_712_886_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_712_886_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_712_886_Closed_Text.style.display='none'; Codehighlighter1_712_886_Open_Image.style.display='inline'; Codehighlighter1_712_886_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_712_886_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_712_886_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(formula[i]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_736_801_Open_Image onclick="this.style.display='none'; Codehighlighter1_736_801_Open_Text.style.display='none'; Codehighlighter1_736_801_Closed_Image.style.display='inline'; Codehighlighter1_736_801_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_736_801_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_736_801_Closed_Text.style.display='none'; Codehighlighter1_736_801_Open_Image.style.display='inline'; Codehighlighter1_736_801_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span id=Codehighlighter1_736_801_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_736_801_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        match(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        rexp();    <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(formula[i]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            match(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(formula[i]</span><span style="COLOR: #000000">>=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&&</span><span style="COLOR: #000000"> formula[i]</span><span style="COLOR: #000000"><=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        match(formula[i]);<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        error();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main()<br><img id=Codehighlighter1_900_1065_Open_Image onclick="this.style.display='none'; Codehighlighter1_900_1065_Open_Text.style.display='none'; Codehighlighter1_900_1065_Closed_Image.style.display='inline'; Codehighlighter1_900_1065_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_900_1065_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_900_1065_Closed_Text.style.display='none'; Codehighlighter1_900_1065_Open_Image.style.display='inline'; Codehighlighter1_900_1065_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_900_1065_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_900_1065_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(cin.getline(formula,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">))<br><img id=Codehighlighter1_936_1052_Open_Image onclick="this.style.display='none'; Codehighlighter1_936_1052_Open_Text.style.display='none'; Codehighlighter1_936_1052_Closed_Image.style.display='inline'; Codehighlighter1_936_1052_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_936_1052_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_936_1052_Closed_Text.style.display='none'; Codehighlighter1_936_1052_Open_Image.style.display='inline'; Codehighlighter1_936_1052_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span id=Codehighlighter1_936_1052_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_936_1052_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        flag</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        rexp();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(formula[i]</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">IS A REGULAR EXPRESSION!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            error();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div> <p> </p> <p>瀹屾暣浠g爜錛?<a href="http://m.shnenglu.com/Files/Plator/rexp.rar">/Files/Plator/rexp.rar</a></span></p> <img src ="http://m.shnenglu.com/Plator/aggbug/47088.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Plator/" target="_blank">鑿婇Θ</a> 2008-04-15 00:09 <a href="http://m.shnenglu.com/Plator/archive/2008/04/15/47088.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.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://qdzhudai.com" target="_blank">精品动漫3d一区二区三区免费</a>| <a href="http://69xxx6.com" target="_blank">亚洲国产精品久久久久秋霞蜜臀 </a>| <a href="http://854277.com" target="_blank">欧美色欧美亚洲高清在线视频</a>| <a href="http://xianconnector.com" target="_blank">国产亚洲高清视频</a>| <a href="http://zzztt04.com" target="_blank">亚洲精品视频免费</a>| <a href="http://seo8138.com" target="_blank">欧美成人精品福利</a>| <a href="http://wnboke.com" target="_blank">久久国产精品一区二区</a>| <a href="http://91pinping.com" target="_blank">国产精品爽爽爽</a>| <a href="http://794579.com" target="_blank">亚洲欧美激情诱惑</a>| <a href="http://0359222.com" target="_blank">99精品欧美一区二区三区</a>| <a href="http://www-222304.com" target="_blank">久久综合久色欧美综合狠狠</a>| <a href="http://syruili.com" target="_blank">国产一区二区三区在线观看精品</a>| <a href="http://zw1019.com" target="_blank">欧美亚洲三区</a>| <a href="http://jiyixitong.com" target="_blank">亚洲欧美日本视频在线观看</a>| <a href="http://405151.com" target="_blank">国产精品永久免费视频</a>| <a href="http://dahuxu.com" target="_blank">欧美一级淫片播放口</a>| <a href="http://www-8617.com" target="_blank">亚洲一区二区久久</a>| <a href="http://998609.com" target="_blank">国产精品网站视频</a>| <a href="http://7885888.com" target="_blank">久久九九精品99国产精品</a>| <a href="http://by2735.com" target="_blank">午夜精品久久久久久久99樱桃</a>| <a href="http://gx2020.com" target="_blank">国产精品视频网站</a>| <a href="http://www-485050.com" target="_blank">久久精品91</a>| <a href="http://aqdit2022.com" target="_blank">久久精品免费播放</a>| <a href="http://miandoctor.com" target="_blank">在线成人av.com</a>| <a href="http://missav88.com" target="_blank">亚洲福利在线观看</a>| <a href="http://irongxun.com" target="_blank">欧美日韩1区2区</a>| <a href="http://lorgou.com" target="_blank">亚洲欧美日韩国产中文在线</a>| <a href="http://sxhrsmjj.com" target="_blank">亚洲免费视频观看</a>| <a href="http://677679.com" target="_blank">国产真实久久</a>| <a href="http://1235656.com" target="_blank">亚洲二区在线</a>| <a href="http://lovehefei.com" target="_blank">欧美日韩一区二区免费视频</a>| <a href="http://my88855.com" target="_blank">午夜精品久久久久久久 </a>| <a href="http://www151zh.com" target="_blank">亚洲视频一区在线</a>| <a href="http://2323nn.com" target="_blank">欧美一级夜夜爽</a>| <a href="http://www-74987.com" target="_blank">韩日午夜在线资源一区二区</a>| <a href="http://9885888.com" target="_blank">麻豆成人精品</a>| <a href="http://zd-jm.com" target="_blank">欧美日韩mp4</a>| <a href="http://ylnnc.com" target="_blank">欧美一级视频一区二区</a>| <a href="http://balqueen.com" target="_blank">久久久蜜臀国产一区二区</a>| <a href="http://syntheticnets.com" target="_blank">…久久精品99久久香蕉国产</a>| <a href="http://www35177.com" target="_blank">亚洲国产精品久久91精品</a>| <a href="http://woniuminsu.com" target="_blank">国产精品高精视频免费</a>| <a href="http://mimi78.com" target="_blank">久久久一二三</a>| <a href="http://5588gww.com" target="_blank">欧美日韩精品</a>| <a href="http://194123.com" target="_blank">久久婷婷国产综合精品青草</a>| <a href="http://eshop999.com" target="_blank">欧美国产亚洲精品久久久8v</a>| <a href="http://woshinannan741.com" target="_blank">亚洲在线1234</a>| <a href="http://cabenn.com" target="_blank">久久天天躁狠狠躁夜夜av</a>| <a href="http://zucai168.com" target="_blank">亚洲老板91色精品久久</a>| <a href="http://155fck.com" target="_blank">亚洲在线观看视频网站</a>| <a href="http://05511253.com" target="_blank">尤物网精品视频</a>| <a href="http://0773ye.com" target="_blank">在线视频日韩</a>| <a href="http://hhh246.com" target="_blank">亚洲黄色一区</a>| <a href="http://miandoctor.com" target="_blank">午夜精品一区二区三区在线视</a>| <a href="http://uniconmgt.com" target="_blank">亚洲国产成人av</a>| <a href="http://ooo789.com" target="_blank">亚洲在线播放电影</a>| <a href="http://www-18873.com" target="_blank">亚洲三级性片</a>| <a href="http://nebnb89.com" target="_blank">久久不射中文字幕</a>| <a href="http://tavbao.com" target="_blank">亚洲欧美国产高清va在线播</a>| <a href="http://woniuminsu.com" target="_blank">久久精品成人一区二区三区</a>| <a href="http://57sa.com" target="_blank">一区二区欧美在线</a>| <a href="http://354eee.com" target="_blank">久久精品中文字幕免费mv</a>| <a href="http://playav111.com" target="_blank">一区二区三区四区国产精品</a>| <a href="http://lao64.com" target="_blank">久久婷婷一区</a>| <a href="http://wwwavtb1122.com" target="_blank">午夜精品视频网站</a>| <a href="http://211186.com" target="_blank">欧美日韩成人综合在线一区二区</a>| <a href="http://bbbbyb.com" target="_blank">久久久久久久欧美精品</a>| <a href="http://hlyjh.com" target="_blank">国产精品v欧美精品v日韩</a>| <a href="http://977dy.com" target="_blank">欧美激情91</a>| <a href="http://highfivewe.com" target="_blank">国产一区二区中文</a>| <a href="http://555346.com" target="_blank">中文在线不卡视频</a>| <a href="http://8135777.com" target="_blank">99国内精品久久</a>| <a href="http://6666345.com" target="_blank">美日韩精品免费观看视频</a>| <a href="http://playav999.com" target="_blank">久久激情综合网</a>| <a href="http://www-kj8777.com" target="_blank">国产精品久久久久aaaa</a>| <a href="http://xissy.com" target="_blank">亚洲精品日韩在线观看</a>| <a href="http://er65.com" target="_blank">亚洲国产福利在线</a>| <a href="http://asanny.com" target="_blank">久久久久国产成人精品亚洲午夜</a>| <a href="http://www-tt211.com" target="_blank">欧美与黑人午夜性猛交久久久</a>| <a href="http://www38044.com" target="_blank">欧美精品一区二区在线播放</a>| <a href="http://wwwavtb1122.com" target="_blank">麻豆久久婷婷</a>| <a href="http://hsxinbao.com" target="_blank">国产一区二区三区奇米久涩 </a>| <a href="http://xfrlyy.com" target="_blank">国产精品人成在线观看免费</a>| <a href="http://junhuatesu.com" target="_blank">亚洲精品123区</a>| <a href="http://www-e2222.com" target="_blank">最新精品在线</a>| <a href="http://216667.com" target="_blank">老司机午夜免费精品视频</a>| <a href="http://www-4997.com" target="_blank">久久精品夜色噜噜亚洲a∨</a>| <a href="http://8135777.com" target="_blank">国产精品一二三四区</a>| <a href="http://wwww76.com" target="_blank">一区二区三区色</a>| <a href="http://snis675.com" target="_blank">亚洲一区3d动漫同人无遮挡</a>| <a href="http://yw6632.com" target="_blank">欧美日韩高清区</a>| <a href="http://youjizzbox.com" target="_blank">亚洲精品综合</a>| <a href="http://www-136445.com" target="_blank">亚洲视频电影在线</a>| <a href="http://www-88899.com" target="_blank">欧美午夜精品一区二区三区</a>| <a href="http://www-293456.com" target="_blank">亚洲毛片一区</a>| <a href="http://5553303.com" target="_blank">亚洲性人人天天夜夜摸</a>| <a href="http://seqing9.com" target="_blank">欧美日韩免费一区二区三区</a>| <a href="http://bkksd.com" target="_blank">亚洲在线一区</a>| <a href="http://saox28.com" target="_blank">欧美视频在线观看一区二区</a>| <a href="http://easypufu.com" target="_blank">日韩午夜高潮</a>| <a href="http://012492.com" target="_blank">免播放器亚洲一区</a>| <a href="http://4388x3.com" target="_blank">亚洲精品人人</a>| <a href="http://chinagreetown.com" target="_blank">欧美一级午夜免费电影</a>| <a href="http://yp77741.com" target="_blank">亚洲欧洲精品一区二区</a>| <a href="http://ffff53.com" target="_blank">中日韩高清电影网</a>| <a href="http://www-440447.com" target="_blank">1769国产精品</a>| <a href="http://794278.com" target="_blank">亚洲一线二线三线久久久</a>| <a href="http://687989.com" target="_blank">亚洲国产99精品国自产</a>| <a href="http://jiyixitong.com" target="_blank">亚洲网站在线播放</a>| <a href="http://nc04.com" target="_blank">亚洲日本电影</a>| <a href="http://ynzhuoyi.com" target="_blank">久久动漫亚洲</a>| <a href="http://xhs1039.com" target="_blank">亚洲欧美视频一区</a>| <a href="http://799858.com" target="_blank">欧美另类人妖</a>| <a href="http://cn1357.com" target="_blank">欧美sm极限捆绑bd</a>| <a href="http://7m08.com" target="_blank">国产在线欧美</a>| <a href="http://456dv.com" target="_blank">亚洲愉拍自拍另类高清精品</a>| <a href="http://www-06654.com" target="_blank">亚洲毛片在线看</a>| <a href="http://c7lc.com" target="_blank">久久色中文字幕</a>| <a href="http://haohetour.com" target="_blank">久久精品视频在线观看</a>| <a href="http://www9ckk1.com" target="_blank">欧美日韩综合一区</a>| <a href="http://123086.com" target="_blank">91久久精品国产91性色tv</a>| <a href="http://52wenxiu.com" target="_blank">国语自产精品视频在线看8查询8 </a>| <a href="http://797298.com" target="_blank">国产一区二区三区精品欧美日韩一区二区三区</a>| <a href="http://jxyptsw.com" target="_blank">欧美激情国产日韩精品一区18</a>| <a href="http://797298.com" target="_blank">国产日韩欧美二区</a>| <a href="http://www-77663.com" target="_blank">亚洲视频在线观看</a>| <a href="http://681656.com" target="_blank">在线亚洲一区二区</a>| <a href="http://yiqipapa8.com" target="_blank">免费亚洲视频</a>| <a href="http://227237.com" target="_blank">欧美二区在线播放</a>| <a href="http://107766a.com" target="_blank">依依成人综合视频</a>| <a href="http://yzxq520.com" target="_blank">久久精品盗摄</a>| <a href="http://j88866.com" target="_blank">模特精品在线</a>| <a href="http://320ur.com" target="_blank">亚洲国产精品成人综合</a>| <a href="http://7kz6.com" target="_blank">久久久精品动漫</a>| <a href="http://caoxiu33.com" target="_blank">久久一区二区三区四区</a>| <a href="http://rbet6365.com" target="_blank">国语对白精品一区二区</a>| <a href="http://fdgkinetic.com" target="_blank">久久久久久久国产</a>| <a href="http://329374.com" target="_blank">欧美77777</a>| <a href="http://4466777.com" target="_blank">亚洲精品一区二区三</a>| <a href="http://wwwen41.com" target="_blank">欧美国产日韩精品免费观看</a>| <a href="http://92ebook.com" target="_blank">欧美成人激情在线</a>| <a href="http://5e5b7g.com" target="_blank">亚洲毛片一区二区</a>| <a href="http://xissy.com" target="_blank">国产精品chinese</a>| <a href="http://236fff.com" target="_blank">亚洲视频精品</a>| <a href="http://987527.com" target="_blank">久久精品国产第一区二区三区最新章节</a>| <a href="http://caopormo.com" target="_blank">欧美三级乱码</a>| <a href="http://xashp.com" target="_blank">亚洲性感激情</a>| <a href="http://budanbao.com" target="_blank">久久精品视频播放</a>| <a href="http://4466777.com" target="_blank">亚洲第一在线综合在线</a>| <a href="http://wwwxigua66.com" target="_blank">美女图片一区二区</a>| <a href="http://by4433.com" target="_blank">亚洲激情视频在线播放</a>| <a href="http://xccp4888.com" target="_blank">一区二区三区精品</a>| <a href="http://ycpeixun.com" target="_blank">国产精品久在线观看</a>| <a href="http://281191.com" target="_blank">午夜精品一区二区三区四区</a>| <a href="http://pourporn.com" target="_blank">久久夜色精品国产噜噜av</a>| <a href="http://855821.com" target="_blank">136国产福利精品导航网址</a>| <a href="http://zuan3344.com" target="_blank">欧美成人精品一区</a>| <a href="http://kkwwxx.com" target="_blank">夜夜嗨av一区二区三区四季av</a>| <a href="http://zzztt04.com" target="_blank">欧美男人的天堂</a>| <a href="http://cczm4.com" target="_blank">日韩午夜av</a>| <a href="http://xxxbobba.com" target="_blank">欧美亚洲视频在线观看</a>| <a href="http://51shoudian.com" target="_blank">激情亚洲成人</a>| <a href="http://wwww76.com" target="_blank">欧美精品日韩三级</a>| <a href="http://710477.com" target="_blank">亚洲免费视频网站</a>| <a href="http://40346c.com" target="_blank">久久频这里精品99香蕉</a>| <a href="http://eeii33.com" target="_blank">亚洲精品乱码</a>| <a href="http://vipaiqiyi.com" target="_blank">国产精品夜夜嗨</a>| <a href="http://5767j.com" target="_blank">久久永久免费</a>| <a href="http://dadepaimai.com" target="_blank">99国产精品视频免费观看一公开 </a>| <a href="http://5b6c.com" target="_blank">亚洲三级观看</a>| <a href="http://4388x3.com" target="_blank">国产精品一区二区在线观看</a>| <a href="http://yyyy456.com" target="_blank">久久久久国产精品一区二区</a>| <a href="http://wb2014.com" target="_blank">亚洲精品一二区</a>| <a href="http://5566kan.com" target="_blank">欧美一区国产在线</a>| <a href="http://www48929.com" target="_blank">亚洲精品婷婷</a>| <a href="http://my1315.com" target="_blank">国产亚洲成av人在线观看导航</a>| <a href="http://98956888.com" target="_blank">老司机免费视频一区二区三区</a>| <a href="http://y66776.com" target="_blank">一本一本久久</a>| <a href="http://by5130.com" target="_blank">欧美肥婆在线</a>| <a href="http://spardec.com" target="_blank">欧美在线视频一区二区</a>| <a href="http://hbdxzx.com" target="_blank">日韩写真在线</a>| <a href="http://6k7a.com" target="_blank">影音国产精品</a>| <a href="http://bjygp.com" target="_blank">国产日本欧美视频</a>| <a href="http://xaxkizlar.com" target="_blank">欧美日韩mv</a>| <a href="http://yyds16.com" target="_blank">美女爽到呻吟久久久久</a>| <a href="http://bodabloc.com" target="_blank">亚洲专区免费</a>| <a href="http://021-job.com" target="_blank">亚洲美女淫视频</a>| <a href="http://www068hs.com" target="_blank">欧美激情亚洲</a>| <a href="http://592xyy.com" target="_blank">久久综合九色综合欧美就去吻</a>| <a href="http://136hao.com" target="_blank">亚洲午夜精品久久久久久app</a>| <a href="http://z10669.com" target="_blank">极品尤物av久久免费看 </a>| <a href="http://jpqueyou.com" target="_blank">国产欧美日韩一区二区三区在线观看 </a>| <a href="http://1616mz.com" target="_blank">欧美一区二区在线</a>| <a href="http://012492.com" target="_blank">亚洲毛片在线观看.</a>| <a href="http://yy0754.com" target="_blank">免费在线一区二区</a>| <a href="http://96ykm.com" target="_blank">久久久久欧美精品</a>| <a href="http://www-77663.com" target="_blank">99视频精品全部免费在线</a>| <a href="http://xuanxuan88.com" target="_blank">一区二区在线观看视频在线观看 </a>| <a href="http://yichenep.com" target="_blank">夜夜爽99久久国产综合精品女不卡</a>| <a href="http://ythbhg.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>