Flex & Bison 筆記

lex 文件結構

lex 文件命名通常以 .l 結尾粘都,共分為三個部分佃声,由 %% 分割澎剥。

聲明部分
%{
會被原封不動拷貝到生成的文件中
%}
選項設置及預定義一些常用的模式

%%
規(guī)則定義部分叭首,一個規(guī)則包含一個模式和一個動作
REG {C 語言代碼, return 一個 Token}
其中 reg 是正則表達式模式疤苹,每讀取的字符匹配了一個模式互广,就執(zhí)行規(guī)則 {}里面的動作代碼,返回一個 TOKEN卧土。其中模式必須出現(xiàn)在行首惫皱,如果有倆個模式匹配,則選取其中最長的尤莺,也就是最長匹配原則

規(guī)則定義部分逸吵,也可以包含一個 %{ C 代碼 %} 塊,其中的 C 代碼會被執(zhí)行一次缝裁,這通成ㄖ澹可以用來返回一個 TOKEN足绅,這個 TOKEN 會加在所有的 TOKEN 之前
%%
子例程,也就是 C 語言的 函數(shù)定義韩脑,會被拷貝到生成的此法額分析器 C 代碼中

Flex

三層輸入

  1. 默認使用標準輸入或者yyin文件句柄讀取氢妈,yyrestart() 重置輸入狀態(tài),用來讀取多個輸入文件段多。

  2. 創(chuàng)建并使用 YY_BUFFER_STATE 輸入緩沖區(qū)

  3. #define YY_INPUT(buf, result, max_size)

    當詞法分析器的輸入緩沖區(qū)為空時首量,就會調(diào)用 YY_INPUT,buf 是緩存區(qū)进苍,result 等于實際存放在緩沖區(qū)的字符大小加缘,max_size 緩存區(qū)的最大值。定義部分就是要把字符串拷貝到 buf 中觉啊。YY_INPUT 一般用于輸入來自于其他一些內(nèi)容拣宏,而這些內(nèi)容無法預先載入字符串緩沖區(qū)且無法支持標準輸入輸出。

狀態(tài)

定義:%x杠人,%s
切換:BEGIN(S)

Bison

每次規(guī)約就會執(zhí)行規(guī)則相關聯(lián)的動作
yyparse() 會調(diào)用yylex()獲取記號勋乾,yyval 或得記號值。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗡善,一起剝皮案震驚了整個濱河市辑莫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罩引,老刑警劉巖各吨,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異袁铐,居然都是意外死亡揭蜒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門昭躺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伪嫁,你說我怎么就攤上這事领炫。” “怎么了张咳?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵帝洪,是天一觀的道長。 經(jīng)常有香客問我脚猾,道長葱峡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任龙助,我火速辦了婚禮砰奕,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己军援,他們只是感情好仅淑,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胸哥,像睡著了一般涯竟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上空厌,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天庐船,我揣著相機與錄音,去河邊找鬼嘲更。 笑死筐钟,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的哮内。 我是一名探鬼主播盗棵,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼北发!你這毒婦竟也來了纹因?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤琳拨,失蹤者是張志新(化名)和其女友劉穎瞭恰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狱庇,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡惊畏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了密任。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颜启。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浪讳,靈堂內(nèi)的尸體忽然破棺而出缰盏,到底是詐尸還是另有隱情,我是刑警寧澤淹遵,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布口猜,位于F島的核電站,受9級特大地震影響透揣,放射性物質(zhì)發(fā)生泄漏济炎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一辐真、第九天 我趴在偏房一處隱蔽的房頂上張望须尚。 院中可真熱鬧崖堤,春花似錦、人聲如沸恨闪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咙咽。三九已至老玛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钧敞,已是汗流浹背蜡豹。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溉苛,地道東北人镜廉。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像愚战,于是被迫代替她去往敵國和親娇唯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348