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

C語(yǔ)言switch語(yǔ)句的一種文法改寫方法

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

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

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

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語(yǔ)句

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

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

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

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

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

在常見(jiàn)的編譯系統(tǒng)中,往往希望將語(yǔ)義動(dòng)作置于產(chǎn)生式中所有符號(hào)的右側(cè),其目的是使翻譯按這樣的方式進(jìn)行:當(dāng)用某產(chǎn)生式進(jìn)行歸約時(shí),在完成語(yǔ)法分析動(dòng)作(歸約)之后,執(zhí)行相應(yīng)的語(yǔ)義動(dòng)作,即采用自底向上的語(yǔ)法制導(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)生式所配的語(yǔ)義動(dòng)作即為原來(lái)插入的動(dòng)作符號(hào)。除了這種方法外,另外一種改造方法是將原產(chǎn)生式“拆分”成若干個(gè)“小”產(chǎn)生式,拆分點(diǎn)就設(shè)在每個(gè)語(yǔ)義動(dòng)作符的出現(xiàn)處,以保證動(dòng)作符均出現(xiàn)在最右側(cè)。 

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

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

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

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

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

可以驗(yàn)證,經(jīng)過(guò)改寫后的文法與switch語(yǔ)句未改寫前的文法完全等價(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語(yǔ)句含有i+1個(gè)常量表達(dá)式。改寫后的文法是一個(gè)實(shí)用的方法,只要配上相應(yīng)的語(yǔ)義動(dòng)作就可以進(jìn)行翻譯。實(shí)際工作經(jīng)驗(yàn)證明,這種文法改寫方法不會(huì)對(duì)原文法的語(yǔ)法分析帶來(lái)影響,且由于產(chǎn)生式相對(duì)“短”些,分析程序在棧中存取語(yǔ)義信息會(huì)更方便。

4 結(jié) 語(yǔ)

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

參 考 文 獻(xiàn)

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

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

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

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

主站蜘蛛池模板: 精品亚洲欧美中文字幕在线看| 久久综合色天堂av| 一区二区三区精品视频在线观看| 91久久偷偷做嫩草影院| 精品少妇三级亚洲| 青青青草国产| 亚洲第一黄片大全| 亚洲aaa视频| 一级全免费视频播放| 乱人伦99久久| 91精品啪在线观看国产91九色| 波多野结衣第一页| 国产成人精品综合| 97在线碰| 91国内在线视频| 免费一级无码在线网站| 精品久久久久成人码免费动漫| 色综合久久88色综合天天提莫| 国产精品嫩草影院视频| 超清人妻系列无码专区| 无码av免费不卡在线观看| 91探花国产综合在线精品| 国产精品久线在线观看| 人妻一区二区三区无码精品一区| 欧美色视频日本| 欧美精品成人| 亚洲色图狠狠干| 五月婷婷伊人网| 亚洲成年人网| 2020亚洲精品无码| 亚洲国产成人在线| 毛片在线播放a| 亚洲国产在一区二区三区| www.99在线观看| 在线观看免费人成视频色快速| 99精品福利视频| 亚洲成人动漫在线| a色毛片免费视频| 激情乱人伦| 国产精品欧美日本韩免费一区二区三区不卡 | 欧美翘臀一区二区三区| 亚洲欧美精品日韩欧美| 亚洲av片在线免费观看| 欧美a在线| 亚洲欧美不卡中文字幕| 日韩AV无码免费一二三区| 沈阳少妇高潮在线| 中文字幕亚洲精品2页| 亚洲国产中文综合专区在| 欧美亚洲香蕉| 黄色网址免费在线| 日韩人妻无码制服丝袜视频| 精品少妇人妻av无码久久| 国产免费高清无需播放器| 久久综合色播五月男人的天堂| 欧美一区二区精品久久久| 欧美中文一区| 狠狠色综合网| 影音先锋丝袜制服| 欧美爱爱网| 久久一本日韩精品中文字幕屁孩| 亚洲不卡网| 成人国产一区二区三区| 精品无码视频在线观看| 一本大道香蕉久中文在线播放| 国产精品深爱在线| 午夜少妇精品视频小电影| 五月天久久婷婷| 91娇喘视频| 午夜天堂视频| 毛片在线区| 91国内外精品自在线播放| 欧美色丁香| 国内精自线i品一区202| 波多野结衣一区二区三区AV| 日韩在线视频网| 免费va国产在线观看| 九月婷婷亚洲综合在线| 精品久久久久久中文字幕女| 91一级片| 国产在线91在线电影| 91午夜福利在线观看|