亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

        關(guān)鍵詞:C語(yǔ)言;switch語(yǔ)句;文法改寫(xiě);語(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ǔ)句就是這類(lèi)結(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 文法需要改寫(xiě)?yīng)?/p>

        由于計(jì)算機(jī)硬件只懂得自己的指令系統(tǒng),即只能直接執(zhí)行相應(yīng)機(jī)器語(yǔ)言格式的代碼程序,而不能直接執(zhí)行用高級(jí)語(yǔ)言編寫(xiě)的程序。因此,要在計(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)行改寫(xiě),以適應(yīng)這一要求。改寫(xiě)的方法有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ǔ)句的文法改寫(xiě)?yīng)?/p>

        對(duì)于上述2種改寫(xiě)文法的方法,第一種方法比較簡(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ǔ)句的改寫(xiě)將采用拆分法。上面的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ò)改寫(xiě)后的文法與switch語(yǔ)句未改寫(xiě)前的文法完全等價(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á)式。改寫(xiě)后的文法是一個(gè)實(shí)用的方法,只要配上相應(yīng)的語(yǔ)義動(dòng)作就可以進(jìn)行翻譯。實(shí)際工作經(jīng)驗(yàn)證明,這種文法改寫(xiě)方法不會(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ù)母脑?,使得在翻譯時(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ǔ)言?xún)?yōu)化實(shí)現(xiàn)[J]現(xiàn)代電子技術(shù),2007,30(4):9-10,13

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

        欧美成人aaa片一区国产精品| 中文字幕人妻乱码在线| 精品人妻av一区二区三区四区| 亚洲一区视频中文字幕| 亚洲蜜臀av一区二区三区| 手机看片久久国产免费| 国产午夜精品电影久久| 国产一区二区三区色区| av免费不卡一区二区| 国产av无码专区亚洲av毛网站| 亚洲精品免费专区| 亚洲乱码中文字幕综合69堂| av网站在线观看大全| 久久久久亚洲av无码专区首jn| 男人天堂免费视频| 久久精品国产亚洲av一| 国产香蕉视频在线播放| 久久国产热这里只有精品 | 天堂AV无码AV毛片毛| 亚洲一区二区在线观看av| 日韩人妻ol丝袜av一二区| 天堂sv在线最新版在线 | 18无码粉嫩小泬无套在线观看 | 日韩av在线不卡一区二区三区| av网站免费在线浏览| 玩弄丰满奶水的女邻居| 亞洲綜合無碼av一區二區| 国产在线拍91揄自揄视精品91 | 国产午夜福利精品一区二区三区| 中文乱码人妻系列一区二区| 国产目拍亚洲精品区一区| 国产剧情一区二区三区在线 | 欧美精品aaa久久久影院| 精品国产亚洲av高清日韩专区| 亚洲熟妇丰满多毛xxxx| 99精品电影一区二区免费看| 亚洲视频在线观看青青草| 免费观看91色国产熟女| 中文字幕日本特黄aa毛片| 国产精品国三级国产av| 久久久麻豆精亚洲av麻花|