青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數(shù)據(jù)加載中……

用Flex/Bison分析c代碼的經(jīng)歷

這些日子花了不少時(shí)間在一個(gè)c語言的語法分析程序上,這個(gè)程序要能識別變量、函數(shù)的定義、聲明和引用,簡而言之就是找出sourceinsight所能提供的信息(比si還要精確)。

分析代碼和編譯代碼一樣,都要做語法分析。但是因?yàn)榉治龃a不做預(yù)處理,所以就會遇到一些麻煩,比如處理一些定義的稀奇古怪的宏,無法判斷一個(gè)identifier是變量還是類型。這么一來,嚴(yán)格的用C語言語法來分析代碼就沒法通過。

考慮到這個(gè)問題,一開始決定用lex作詞法分析,生寫語法分析。進(jìn)行到中間,代碼復(fù)雜度越來越高,感覺力不從心。又決定通過修改標(biāo)準(zhǔn)的C語言語法規(guī)則,用bisonyaccGNU實(shí)現(xiàn))來完成語法分析

所謂“工欲善其事,必先利其器”,bison在做語法分析上,果然很方便。但是很快就遇到上面所說的問題:不做預(yù)處理,無法得到一個(gè)token的類型。標(biāo)準(zhǔn)的yacc支持的是LALR語法,LALR語法只預(yù)讀一個(gè)token,無法解決這個(gè)問題。

好在GNUYacc實(shí)現(xiàn)bison支持GLR語法GLR沒有只預(yù)讀一個(gè)token的限制,它用狀態(tài)分裂來解決無法判斷token類型的問題。采用GLR,寫語法規(guī)則就基本上沒有什么限制了。

但是GLR有個(gè)問題,它用狀態(tài)分裂解決問題,如果所有分裂的狀態(tài)只有一個(gè)能分析成功,那自然OK;如果不能,就叫產(chǎn)生了ambiguity(不確定),分析就失敗了。

解決ambiguity,可以用%dprec來指定規(guī)則的優(yōu)先級。當(dāng)兩個(gè)狀態(tài)發(fā)生ambiguity時(shí),根據(jù)它們對應(yīng)的reduce規(guī)則的優(yōu)先級,選擇優(yōu)先級高的那個(gè)狀態(tài)。

但還有一類ambiguity的情況,用%dprec也沒發(fā)解決。那就是兩個(gè)產(chǎn)生ambiguity的狀態(tài)它們對應(yīng)的reduce規(guī)則是同一條。這類問題很棘手,我只好采用重寫規(guī)則來避免。但這就導(dǎo)致規(guī)則的可讀性很差,而且往往是解決一個(gè)ambiguity又引入另外一個(gè)。

無奈,往bisonmail list里發(fā)了一封信求救,第二天收到一哥們回信,信中說:

“用merge啊。我也遇到過類似的問題。”

merge是啥呢?merge就正好是處理上面這類問題的,相當(dāng)于把多個(gè)狀態(tài)合并。因?yàn)槭潜容^新的特性,在bison的文檔里并沒有很明顯的提及。

這樣,用bison分析c代碼就基本沒有問題了;)

 

備注

Flex:詞法分析器

Bison:語法分析器

GNU bison是一個(gè)自由軟件,用于自動生成語法分析器程序,實(shí)際上可用于所有常見的操作系統(tǒng)。Bison把LALR形式的上下文無關(guān)文法描述轉(zhuǎn)換為可做語法分析的CC++程序。在新近版本中,Bison增加了對GLR語法分析算法的支持。

GNU bison基本兼容Yacc,并做了一些改進(jìn)。它一般與flex一起使用。

posted on 2008-11-22 00:02 肥仔 閱讀(7864) 評論(1)  編輯 收藏 引用 所屬分類: LEX & YACC

評論

# re: 用Flex/Bison分析c代碼的經(jīng)歷[未登錄]  回復(fù)  更多評論   

果然想到一起了,最近也在做提取C變量、函數(shù)的定義之類的程序想用lex和yacc,也郁悶在預(yù)處理上了,不知項(xiàng)目能否開源參考一下?
2012-11-19 15:45 | 逗你玩
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线关看| 亚洲国产mv| 激情欧美日韩| 红杏aⅴ成人免费视频| 国产一区二区av| 国产综合色在线| 在线国产欧美| 亚洲日本无吗高清不卡| 亚洲三级性片| 亚洲小视频在线观看| 亚洲欧美国产视频| 午夜精品久久久久久久男人的天堂| 性久久久久久久久久久久| 鲁大师成人一区二区三区| 美女在线一区二区| 亚洲娇小video精品| 一区二区三区www| 午夜宅男久久久| 麻豆久久精品| 国产精品视频大全| 尤妮丝一区二区裸体视频| 一区二区三区四区五区精品| 久久久久久久久伊人| 欧美日韩在线观看一区二区三区| 一本久久a久久精品亚洲| 中文在线一区| 久久躁日日躁aaaaxxxx| 欧美日韩视频专区在线播放| 国产自产女人91一区在线观看| 亚洲国产成人av在线| 亚洲尤物视频在线| 美女黄网久久| 亚洲精品欧美极品| 午夜精品久久| 欧美日韩一区二区高清| 激情文学综合丁香| 亚洲免费一级电影| 亚洲国产日韩在线| 久久久高清一区二区三区| 欧美午夜精品| 亚洲另类视频| 欧美mv日韩mv国产网站| 午夜亚洲福利在线老司机| 欧美精品1区| 亚洲电影免费观看高清完整版在线| 午夜精品久久久久久久男人的天堂| 亚洲国产一成人久久精品| 欧美一站二站| 国产深夜精品福利| 午夜亚洲精品| 亚洲婷婷免费| 国产精品高潮久久| av成人福利| 亚洲精品久久嫩草网站秘色| 久久在线视频在线| 伊人久久大香线蕉av超碰演员| 久久精品亚洲国产奇米99| 亚洲一区在线免费观看| 国产精品嫩草影院av蜜臀| 亚洲视频第一页| 99国产精品视频免费观看| 欧美人与禽猛交乱配视频| 在线看成人片| 男人天堂欧美日韩| 久久久久久久91| 亚洲国产成人av| 欧美高清自拍一区| 欧美成人性网| 夜夜夜精品看看| 99在线精品观看| 国产精品久久久久久久久久免费看 | 国产精品久久久久影院色老大| 99国产精品99久久久久久粉嫩 | 香蕉精品999视频一区二区 | 亚洲美女91| 欧美国产日韩一区二区三区| 亚洲精品乱码久久久久久按摩观| 欧美肥婆bbw| 欧美激情亚洲视频| 在线亚洲精品| 亚洲小说欧美另类社区| 国产亚洲一级高清| 欧美国产日韩xxxxx| 欧美高清免费| 午夜在线a亚洲v天堂网2018| 久久xxxx| 99v久久综合狠狠综合久久| 亚洲一区二区三区免费在线观看| 国产日韩欧美亚洲一区| 免费欧美电影| 欧美日韩一区二区三区视频| 久久国产精品高清| 六月天综合网| 午夜精品福利在线观看| 久久蜜桃精品| 亚洲欧美成人一区二区在线电影| 久久成人免费日本黄色| 日韩视频免费| 欧美一区二区三区在线观看| 亚洲国内自拍| 亚洲一级黄色| 亚洲国产小视频在线观看| 在线综合亚洲| 亚洲韩国青草视频| 亚洲欧美影院| 亚洲久久在线| 欧美中文在线免费| 亚洲一区3d动漫同人无遮挡| 老司机免费视频一区二区| 亚洲欧美中文日韩v在线观看| 免费在线观看精品| 久久久久欧美精品| 欧美三级免费| 亚洲电影在线观看| 精品成人在线| 性做久久久久久久久| 亚洲色图自拍| 欧美精品18+| 亚洲福利视频一区二区| 国内精品久久国产| 亚洲欧美另类国产| 中文久久乱码一区二区| 欧美激情精品久久久六区热门 | 欧美日韩综合在线| 欧美成人精品激情在线观看 | 国产精品vip| 亚洲国产女人aaa毛片在线| 韩国三级电影久久久久久| 久久久久国产精品人| 国产精品黄色在线观看| 亚洲国产精品一区二区久 | 国产一区二区毛片| 亚洲图片欧美午夜| 亚洲一品av免费观看| 欧美激情亚洲一区| 亚洲国产专区| 亚洲国产成人精品女人久久久| 久久99伊人| 久久视频一区| 在线观看国产一区二区| 美女91精品| 亚洲黄色在线看| 在线亚洲一区二区| 欧美性猛交视频| 亚洲性av在线| 久久久久久久网| 一区二区三区我不卡| 久久综合狠狠综合久久综青草| 免费在线观看精品| 91久久精品一区二区别| 欧美久久久久久| 亚洲婷婷综合色高清在线| 欧美一区二区在线播放| 国产一区二区三区久久 | 亚洲影院污污.| 国产精品自拍三区| 久久av最新网址| 亚洲第一精品在线| 亚洲一区二区三区国产| 国产欧美日韩一区二区三区在线| 久久成年人视频| 亚洲欧洲一区二区天堂久久| 亚洲欧美日韩精品一区二区| 国产真实乱子伦精品视频| 免费观看亚洲视频大全| 一区二区三区色| 久热国产精品视频| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美在线视频免费| 亚洲高清在线| 午夜精品国产更新| 永久免费毛片在线播放不卡| 欧美精品免费观看二区| 亚洲一区尤物| 91久久精品国产91久久性色tv| 欧美一级专区| 亚洲欧洲精品天堂一级| 国产精品亚洲综合| 欧美电影免费观看网站| 午夜精品福利视频| 亚洲精品一区二区三区在线观看 | 亚洲精品美女在线| 欧美一区在线直播| 亚洲精品看片| 狠狠色丁香久久婷婷综合_中| 欧美区日韩区| 免费永久网站黄欧美| 性做久久久久久| 久久久久久久网站| 久久精品国产视频| 亚洲精品一区二区三区婷婷月| 久久精选视频| 亚洲伊人伊色伊影伊综合网| 亚洲精品日韩精品| 在线电影一区| 狠狠久久五月精品中文字幕| 国产精品一区二区欧美| 欧美日韩免费| 欧美极品aⅴ影院| 欧美不卡一区|