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

woaidongmao

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

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

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

分析代碼和編譯代碼一樣,都要做語法分析。但是因為分析代碼不做預處理,所以就會遇到一些麻煩,比如處理一些定義的稀奇古怪的宏,無法判斷一個identifier是變量還是類型。這么一來,嚴格的用C語言語法來分析代碼就沒法通過。

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

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

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

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

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

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

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

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

merge是啥呢?merge就正好是處理上面這類問題的,相當于把多個狀態(tài)合并。因為是比較新的特性,在bison的文檔里并沒有很明顯的提及。

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

 

備注

Flex:詞法分析器

Bison:語法分析器

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

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

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

評論

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

果然想到一起了,最近也在做提取C變量、函數(shù)的定義之類的程序想用lex和yacc,也郁悶在預處理上了,不知項目能否開源參考一下?
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>
            亚洲国产另类久久精品| 午夜精品视频一区| 亚洲欧美日韩一区二区三区在线观看| 亚洲精品影视在线观看| 日韩写真视频在线观看| 一片黄亚洲嫩模| 亚洲尤物精选| 久久国产欧美精品| 欧美国产亚洲精品久久久8v| 亚洲人体一区| 在线视频精品一| 午夜激情一区| 欧美国产一区二区| 国产精品永久免费| 亚洲日本精品国产第一区| 欧美一激情一区二区三区| 久久精品视频免费观看| 你懂的国产精品| 欧美视频三区在线播放| 韩国精品在线观看| 在线亚洲+欧美+日本专区| 欧美一区二区在线免费播放| 欧美大成色www永久网站婷| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲综合三区| 蜜桃av噜噜一区二区三区| 欧美视频精品在线观看| 黄色成人精品网站| 亚洲免费一区二区| 亚洲高清在线| 久久精品日韩一区二区三区| 欧美视频免费看| 亚洲人被黑人高潮完整版| 欧美影院视频| 99精品国产在热久久下载| 欧美在线视频全部完| 欧美三日本三级少妇三2023| 亚洲第一区在线观看| 久久精品国产综合精品| 99热在线精品观看| 欧美mv日韩mv亚洲| 好吊成人免视频| 欧美一区高清| 亚洲一区二区在线视频 | 亚洲一区二区日本| 欧美日韩国产在线看| 在线免费观看日本欧美| 久久久91精品国产一区二区三区| 亚洲久久视频| 欧美人与性禽动交情品| 亚洲精品影视| 亚洲风情亚aⅴ在线发布| 久久九九热re6这里有精品| 国产日韩在线看片| 欧美一级视频免费在线观看| 亚洲天堂免费观看| 欧美视频一区二区在线观看 | 国产真实久久| 久久一区二区三区超碰国产精品| 午夜欧美大片免费观看| 国产美女精品人人做人人爽| 性伦欧美刺激片在线观看| 久久人人精品| 国产精品日韩欧美一区二区三区 | 亚洲精品网址在线观看| 欧美好骚综合网| 一本久久a久久免费精品不卡 | 久久电影一区| 在线观看日韩av先锋影音电影院| 久久综合婷婷| 免播放器亚洲| 一区二区三区色| 亚洲在线观看| 一区二区亚洲欧洲国产日韩| 欧美刺激性大交免费视频| 欧美巨乳波霸| 久久国产主播| 欧美阿v一级看视频| 中文久久精品| 欧美亚洲一区二区在线| 亚洲高清不卡| 一区二区日韩免费看| 国产日韩一区在线| 亚洲第一视频| 国产女主播视频一区二区| 麻豆freexxxx性91精品| 欧美日韩亚洲一区在线观看| 久久国产精品久久久久久| 久久视频精品在线| 亚洲自拍啪啪| 麻豆av福利av久久av| 亚洲欧美久久久久一区二区三区| 久久久高清一区二区三区| 一区二区欧美激情| 久久精品国产久精国产思思| 日韩视频三区| 欧美一区二区在线播放| 日韩一区二区福利| 欧美在线免费观看| 亚洲网站视频福利| 久久综合久久综合久久综合| 亚洲伊人久久综合| 免费欧美在线视频| 欧美中文在线免费| 欧美视频成人| 亚洲国产精品一区二区第四页av| 国产欧美综合一区二区三区| 最新国产乱人伦偷精品免费网站 | 亚洲综合色在线| 欧美电影专区| 久热re这里精品视频在线6| 欧美午夜精品久久久久久久 | 欧美一区二区三区男人的天堂| 亚洲精品小视频| 久久久久久久一区| 欧美主播一区二区三区| 欧美视频在线看| 亚洲激情专区| 欧美一区二区三区精品| 欧美精品一区二区三区高清aⅴ| 欧美在线亚洲在线| 欧美三级在线播放| 亚洲国产精品va在线观看黑人| 国产亚洲精久久久久久| 99热免费精品在线观看| 日韩亚洲欧美精品| 欧美va亚洲va香蕉在线| 欧美 日韩 国产 一区| 激情文学综合丁香| 久久久久五月天| 免费成人在线观看视频| 韩日午夜在线资源一区二区| 久久国产手机看片| 久久综合图片| 亚洲国产合集| 欧美二区在线播放| 亚洲精品视频一区二区三区| 一区二区久久| 国产精品国产自产拍高清av王其 | 欧美国产大片| 亚洲黄色在线看| 日韩视频免费在线观看| 欧美日韩和欧美的一区二区| 夜夜爽av福利精品导航| 亚洲在线网站| 国产欧美日本一区二区三区| 久久国产一区二区| 亚洲国产高清aⅴ视频| 一区二区三区久久| 国产精品一区二区三区乱码| 欧美在线999| 欧美黄色影院| 亚洲一区二区三区在线看| 国产精品影视天天线| 久久精品国产亚洲a| 欧美高清视频在线观看| 一本色道久久综合狠狠躁篇怎么玩| 欧美三级乱码| 亚洲综合二区| 欧美国产大片| 亚洲一区二区在线免费观看| 国产亚洲精品成人av久久ww| 免费观看成人| 亚洲在线视频网站| 欧美激情一区在线| 亚洲欧美成人| 在线观看中文字幕亚洲| 欧美日韩一区二区国产| 久久成人精品无人区| 亚洲人体偷拍| 久久一区二区三区四区| 亚洲色图自拍| 亚洲国产一区二区三区在线播 | 中国亚洲黄色| 狠狠做深爱婷婷久久综合一区| 免费在线看一区| 亚洲一区三区电影在线观看| 麻豆精品国产91久久久久久| 在线一区二区三区做爰视频网站| 国产无一区二区| 欧美日韩国产经典色站一区二区三区 | 日韩性生活视频| 国产精品一区一区三区| 免费成人美女女| 亚洲欧美日韩国产一区| 亚洲激情国产精品| 久久中文字幕导航| 午夜精品亚洲| 中文av一区特黄| 亚洲破处大片| 精品91久久久久| 国产精品盗摄一区二区三区| 亚洲国产另类 国产精品国产免费| 午夜精品久久久久久久99黑人| 亚洲国产欧美在线人成| 国产欧美日韩在线播放| 欧美午夜电影完整版| 欧美激情一区二区三级高清视频 | 久久99伊人| 亚洲在线日韩|