999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言switch語句的一種文法改寫方法

2008-04-12 00:00:00孫勁光
現(xiàn)代電子技術(shù) 2008年14期

摘 要:為了使C語言中的switch語句被計(jì)算機(jī)理解,首先要對(duì)其建立文法并對(duì)其進(jìn)行文法改寫。針對(duì)switch語句,提出一種文法改寫方法。該方法采用自底向上的語法制導(dǎo)翻譯方法,根據(jù)switch語句代碼結(jié)構(gòu)的特點(diǎn),利用拆分法,使得改寫前后的文法完全等價(jià),只要給出語義動(dòng)作,就能實(shí)現(xiàn)switch語句的翻譯。這種方法不會(huì)對(duì)原文法的語法分析帶來影響,而且使得分析程序在棧中存取語義信息更方便。

關(guān)鍵詞:C語言;switch語句;文法改寫;語法分析

Grammar Adapt Method for Language C switch entence

ZANG Jing,UN Jinguang

(College of Electronic and Information Engineering,Liaoning echnical University,uludao,1210,China)

Abstract: In order to make switch sentence to be understood by computer,first of all is to set up its grammar and adapt itIt puts forward a kind of grammar adapt method for switch sentencehis method adopts bottom-up syntax-directed translation method,according to switch sentence code structure′s feature,using taking apart method and make the adapted grammar be equal to the unadapted,it can realize switch sentence′s translation if only giving the semantic actionhis method will not bring influence to the original grammar′s syntax analysis,and make it more convenient for analytic program to access semantic information in stack

Keywords:language C;switch sentence;grammar adapt;grammer analysis

1 switch語句

C語言提供的條件語句是實(shí)現(xiàn)程序二叉分支的常見結(jié)構(gòu),但if語句只有兩個(gè)分支可供選擇,而實(shí)際問題中常常需要用到多分支的選擇。當(dāng)然,這些都可以用嵌套的if語句來處理,但如果分支較多,則嵌套的if語句層數(shù)多、程序冗長(zhǎng)而且可讀性降低。因此,有些程序設(shè)計(jì)語言提供了實(shí)現(xiàn)多分支的語句結(jié)構(gòu),C語言中的switch語句就是這類結(jié)構(gòu)的典型。switch語句是多分支選擇語句,用來實(shí)現(xiàn)多分支選擇結(jié)構(gòu),它的一般形式如下:

其中,E是表達(dá)式;Ci是常量表達(dá)式(1≤i≤n);i是語句(1≤i≤n+1)。當(dāng)表達(dá)式的值與某一個(gè)case后的常量表達(dá)式Ci的值相等時(shí),就執(zhí)行此case后面的語句i,若所有case中的常量表達(dá)式的值都沒有與表達(dá)式E的值匹配,就執(zhí)行default后面的語句n+1。

2 文法需要改寫?yīng)?/p>

由于計(jì)算機(jī)硬件只懂得自己的指令系統(tǒng),即只能直接執(zhí)行相應(yīng)機(jī)器語言格式的代碼程序,而不能直接執(zhí)行用高級(jí)語言編寫的程序。因此,要在計(jì)算機(jī)上實(shí)現(xiàn)除機(jī)器語言之外的任意程序設(shè)計(jì)語言,就必須先使此種語言為計(jì)算機(jī)所理解,也就是必須經(jīng)過等價(jià)變換,使它成為計(jì)算機(jī)能理解與執(zhí)行的機(jī)器語言的程序,而這種等價(jià)變換的工作由翻譯程序來完成。編譯程序是從高級(jí)語言到匯編語言或機(jī)器語言的翻譯程序,C語言使用的就是編譯程序。當(dāng)編譯程序在進(jìn)行翻譯時(shí),可以采用自底向上的語法制導(dǎo)翻譯方法,也可以采用自頂向下的語法制導(dǎo)翻譯方法。

自頂向下語法制導(dǎo)翻譯可根據(jù)需要在產(chǎn)生式右部的任何位置上調(diào)用語義動(dòng)作,但在產(chǎn)生式右部符號(hào)之間插入語義動(dòng)作,容易帶來混亂。一方面,它不易閱讀,另一方面,在具體的編譯系統(tǒng)中也不容易實(shí)現(xiàn)。

在常見的編譯系統(tǒng)中,往往希望將語義動(dòng)作置于產(chǎn)生式中所有符號(hào)的右側(cè),其目的是使翻譯按這樣的方式進(jìn)行:當(dāng)用某產(chǎn)生式進(jìn)行歸約時(shí),在完成語法分析動(dòng)作(歸約)之后,執(zhí)行相應(yīng)的語義動(dòng)作,即采用自底向上的語法制導(dǎo)翻譯方法。為達(dá)到此目的,需要對(duì)文法進(jìn)行改寫,以適應(yīng)這一要求。改寫的方法有2種,一種是將所有出現(xiàn)在產(chǎn)生式“中部”的動(dòng)作符號(hào)用一新的非終結(jié)符號(hào)取而代之,并為這個(gè)非終結(jié)符號(hào)定義一個(gè)ε-產(chǎn)生式,而為該ε-產(chǎn)生式所配的語義動(dòng)作即為原來插入的動(dòng)作符號(hào)。除了這種方法外,另外一種改造方法是將原產(chǎn)生式“拆分”成若干個(gè)“小”產(chǎn)生式,拆分點(diǎn)就設(shè)在每個(gè)語義動(dòng)作符的出現(xiàn)處,以保證動(dòng)作符均出現(xiàn)在最右側(cè)。 

3 switch語句的文法改寫?yīng)?/p>

對(duì)于上述2種改寫文法的方法,第一種方法比較簡(jiǎn)單,且對(duì)原文法的可讀性影響不大,在需插入的動(dòng)作不多時(shí),可采用此法。但對(duì)于語法分析程序來說,若使用此法過多,就會(huì)帶來問題,就是由于大量ε-產(chǎn)生式的引入,可能會(huì)產(chǎn)生許多新的移進(jìn)-歸約或歸約-歸約沖突,使語法分析無法進(jìn)行。因此,編譯系統(tǒng)更常采用的方法是拆分法。基于上述原因,對(duì)switch語句的改寫將采用拆分法。上面的switch語句對(duì)應(yīng)的文法的產(chǎn)生式只有一個(gè),產(chǎn)生式右部就是它自身,左部可定義為M。在對(duì)switch語句進(jìn)行翻譯時(shí),要完成如下功能:

(1) 計(jì)算選擇表達(dá)式E的值;

為了實(shí)現(xiàn)上述目標(biāo),經(jīng)過拆分后的switch語句如下所示:

上面給出的6個(gè)產(chǎn)生式就是switch語句經(jīng)過改造后形成的產(chǎn)生式集。

可以驗(yàn)證,經(jīng)過改寫后的文法與switch語句未改寫前的文法完全等價(jià)。若不使用第3個(gè)產(chǎn)生式(即W→I case C:),則只含有一個(gè)常量表達(dá)式;若使用1次第3個(gè)產(chǎn)生式,則含有2個(gè)常量表達(dá)式,即,使用i(i≥0)次第3個(gè)產(chǎn)生式,則switch語句含有i+1個(gè)常量表達(dá)式。改寫后的文法是一個(gè)實(shí)用的方法,只要配上相應(yīng)的語義動(dòng)作就可以進(jìn)行翻譯。實(shí)際工作經(jīng)驗(yàn)證明,這種文法改寫方法不會(huì)對(duì)原文法的語法分析帶來影響,且由于產(chǎn)生式相對(duì)“短”些,分析程序在棧中存取語義信息會(huì)更方便。

4 結(jié) 語

總的說來,在對(duì)于一個(gè)語句進(jìn)行翻譯時(shí),基本策略是先研究各種語句的代碼結(jié)構(gòu),然后根據(jù)代碼結(jié)構(gòu)的特點(diǎn)和只有在歸約時(shí)才調(diào)用語義動(dòng)作這一關(guān)系,對(duì)原文法進(jìn)行適當(dāng)?shù)母脑欤沟迷诜g時(shí)能及時(shí)調(diào)用相應(yīng)的語義子程序,執(zhí)行某些重要的語義動(dòng)作。

參 考 文 獻(xiàn)

[1]譚浩強(qiáng).C程序設(shè)計(jì)[M].2版.北京:清華大學(xué)出版社,200

[2]肖軍模.程序設(shè)計(jì)語言編譯方法[M].大連:大連理工大學(xué)出版社,2000

[3]劉峰1~2R濾波器直接Ⅱ型的C語言優(yōu)化實(shí)現(xiàn)[J]現(xiàn)代電子技術(shù),2007,30(4):9-10,13

作者簡(jiǎn)介 張晶 女,197年出生,講師,工學(xué)碩士。

主站蜘蛛池模板: 国产香蕉在线视频| 中文字幕无码av专区久久| 在线中文字幕网| 国产成人精品无码一区二| 99精品高清在线播放| 高清欧美性猛交XXXX黑人猛交| 超薄丝袜足j国产在线视频| 不卡无码h在线观看| 亚洲国产精品日韩专区AV| 国产在线精品香蕉麻豆| 超碰aⅴ人人做人人爽欧美 | 视频一区视频二区中文精品| 日韩视频精品在线| 国产老女人精品免费视频| 日韩欧美国产综合| 亚洲精品无码在线播放网站| 性激烈欧美三级在线播放| 亚洲三级电影在线播放| 色偷偷一区二区三区| 国产91在线|日本| 中文字幕在线播放不卡| 久草视频精品| 亚洲色图欧美| h网站在线播放| 毛片在线看网站| 午夜欧美理论2019理论| 亚洲浓毛av| 日本久久网站| 久久人搡人人玩人妻精品一| 国产一区二区色淫影院| 91麻豆精品国产91久久久久| 毛片免费在线视频| 最新加勒比隔壁人妻| 亚洲乱伦视频| 久久免费视频播放| 91在线精品免费免费播放| 亚州AV秘 一区二区三区| 亚洲国模精品一区| 最新国产你懂的在线网址| 国产精品30p| 亚洲日韩AV无码精品| 超薄丝袜足j国产在线视频| 国内精品久久久久鸭| 欧美色99| 亚洲第一在线播放| 国产人成在线观看| 中文一级毛片| 一区二区三区国产| 婷婷丁香色| 99精品热视频这里只有精品7| 国产69囗曝护士吞精在线视频| 久久精品人人做人人| 国产日本一线在线观看免费| 国产麻豆精品手机在线观看| 九九九九热精品视频| 国产激情无码一区二区APP | 日韩午夜伦| 亚洲69视频| 97在线观看视频免费| 日本少妇又色又爽又高潮| 97se综合| 最新精品久久精品| 伊人久久久久久久久久| 亚洲精品国产综合99久久夜夜嗨| 无遮挡国产高潮视频免费观看| 精品国产自在在线在线观看| 国产精品福利社| 国产精品无码久久久久久| 高清色本在线www| 日韩第八页| 色噜噜狠狠狠综合曰曰曰| 午夜综合网| 精品国产Av电影无码久久久| 亚洲天堂啪啪| 亚洲女同一区二区| 国产成人AV综合久久| 97视频精品全国免费观看| 欧美日韩在线国产| 亚洲国产日韩在线观看| 国模在线视频一区二区三区| 亚洲最大福利网站| 国产日韩AV高潮在线|