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

基于C語言的自定制腳本語言設(shè)計方法初探

2019-12-16 01:48:12苗金萍
電腦知識與技術(shù) 2019年29期
關(guān)鍵詞:設(shè)計方法

苗金萍

摘要:人們在日常的工作和生活當(dāng)中,經(jīng)常會遇到一些很復(fù)雜的問題需要人們重復(fù)的去解決,當(dāng)遇到這類問題時,都可以借助編程來解決。隨著技術(shù)的不斷創(chuàng)新發(fā)展,當(dāng)前的編程語言雖然有了非常好的發(fā)展,但是很多的問題還不能夠解決,有些問題即使能夠解決,所用到的編程語言也非常的煩瑣。因此,需要在一些領(lǐng)域需要特定的語言來解決問題。下文將針對c語言的自定制腳本語言設(shè)計方法展開探析。

關(guān)鍵詞:c語言;自定制腳本語言;設(shè)計方法

中圖分類號:TP 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2019)29-0054-02

編程語言大致分為兩種,分別為編譯型語言和解釋型語言。這兩種編程語言當(dāng)中,目前使用較多的是編譯型語言,其中的C和C++是非常典型的兩種編譯型語言。利用這些語言能夠?qū)⒊绦騿T所編譯的語言以可執(zhí)行文件的形式輸出。C語言是程序員的入門語言,只有將基本的c語言掌握才能夠編譯出代碼。將自制的編程語言稱為Crowbar(杠桿)。C語言之所以得到了廣泛的應(yīng)用是因為這項語言在實際的運行過程中,具有運行速度快的有點,因此,需要程序員對C語言有一定的掌握。采用c語言進(jìn)行編譯,相對來說方便、簡潔,并且c語言的應(yīng)用能夠讓讀者從模塊的名字或者文件的名字中了解到各個模塊或者文件的作用。隨著社會的不斷發(fā)展,對于編譯性語言的需求也將會越來越多,同時也將會有更多的新型的自制編程語言出現(xiàn),因此將自制編程語言進(jìn)行掌握也是變得非常重要。

1Crowbar(杠桿)語言的基本介紹

1.1程序的結(jié)構(gòu)

Crowbar(杠桿)在實際的語言編譯過程中,可以在函數(shù)或者類的外側(cè)等這些頂層結(jié)構(gòu)中將代碼進(jìn)行書寫。在借助C語言進(jìn)行編程時,即使是寫一句非常簡單的C語句,也需要調(diào)用main()函數(shù)來書寫執(zhí)行語句,而在函數(shù)的外邊只能夠進(jìn)行變量的定義。因此,要想寫幾句簡單的腳本具有一定的難度,特別是對于初學(xué)者來說,C語言的這一特點,也增加了初學(xué)者學(xué)習(xí)的難度。在用Crowbar(杠桿)時,可以借助print將簡單的語句進(jìn)行顯示,這種方式下,不需要再包裹函數(shù)或者類。函數(shù)在定義時,需要使用保留字function,書寫方式如下:#將c和d相加的值顯示,并且,作為返回值返回的函數(shù)

Functionhoge(c,d){

a=c+dtrtumal

程序中的任何一個位置都可以進(jìn)行函數(shù)定義。當(dāng)程序開始執(zhí)行時,會首先從程序的頂層結(jié)構(gòu)中的語句從上往下的開始運行,在運行的過程中,如果遇到函數(shù)定義,就會自動跳過函數(shù)定義的部分,直到函數(shù)被調(diào)用時,才會執(zhí)行函數(shù)定義的部分。如果程序中沒有編寫出return語句,那么將會返回特殊常量null。

1.2數(shù)據(jù)類型

c語言編譯中,使用的數(shù)據(jù)類型有四種,布爾型、整數(shù)型、實數(shù)型和字符串型。其中布爾型的數(shù)據(jù)類型可以是true或者是false;整數(shù)型數(shù)據(jù)實質(zhì)上就是Crowbar(杠桿)中底層的C語言中的int型數(shù)據(jù);實數(shù)型的數(shù)據(jù)也就是Crowbar(杠桿)中底層的c語言中的double型。如果整數(shù)型數(shù)據(jù)與實數(shù)型數(shù)據(jù)在一起進(jìn)行運算,那么整數(shù)型數(shù)據(jù)將會直接被擴(kuò)充為實數(shù)型;字符串型數(shù)據(jù),在進(jìn)行編譯時,可以直接用“+”進(jìn)行連接。除此之外,當(dāng)字符串與數(shù)值用“+”連接時,如果字符串在左邊,數(shù)值在右邊,那么右側(cè)的數(shù)值也將會轉(zhuǎn)換成字符串型。

1.3變量

Crowbar(杠桿1是一種靜態(tài)無類型的語言,同Perl和Ruby這些語言相同。當(dāng)使用Crowbar(杠桿)進(jìn)行語言編譯時,可以直接省去變量聲明的過程,以為在進(jìn)行變量初值的賦予時,其中就包含了對變量的聲明。變量在引用時必須是賦值的變量,如果引用了沒有賦值的變量,那么將會出現(xiàn)錯誤。

對于變量的命名有一定的規(guī)則,規(guī)則基本上與C語言的變量命名是一樣的。在命名時,開頭必須是字母,第二個字符可以是數(shù)字也可以是字母,也可以使用下劃線。Crowbar(杠桿1變量的命名中有些規(guī)則與Perl和Ruby等是有所不同的,不同的部分就是Crowbar(杠桿)變量的開頭不需要書寫$符號。函數(shù)中,存在著局部變量,而這個局部變量就是函數(shù)內(nèi)部首次進(jìn)行賦值的變量,這些變量就會變成函數(shù)內(nèi)部的局部變量,并且局部變量的使用也只是在當(dāng)前的函數(shù)當(dāng)中。C語言的函數(shù)中還可開辟出一個塊(Block),這個塊中含有這更小作用域的局部變量,這一功能是C語言特有的,Crowbar(杠桿)所不具有的。當(dāng)語句執(zhí)行時,才進(jìn)行變量的聲明。下邊給出一個具體的例子:

a只有為10時,b才能夠被聲明,print語句可以正常顯示。如果a不是10,那么將會報出沒有進(jìn)行聲明的警告。global語句的使用有一定的方式,如下:global變量名,變量名...;比如函數(shù)內(nèi)用globala;當(dāng)變量進(jìn)行聲明之后,當(dāng)使用該函數(shù)時,就能夠在函數(shù)的內(nèi)部使用全局變量a。如果全局變量a不存在時,系統(tǒng)將會發(fā)出運行錯誤的警報。之所以采用global語句將變量進(jìn)行聲明之后再使用全局變量,有兩點原因。其中第一點是因為一些函數(shù)在使用時強調(diào)高內(nèi)聚性,這也就要求全局變量在引用時需要有一定的約束性,如果沒有任何約束性就直接引用全局變量,那么就要求所編寫的函數(shù)必須掌握全局變量。如果沒有進(jìn)行變量的聲明,那么就會導(dǎo)致錯誤出現(xiàn);第二個原因是因為全局變量在整個程序編寫的過程中,使用的頻率較低,因此,進(jìn)行聲明之后,就能夠避免全局變量帶來的不必要的麻煩,避免對程序的執(zhí)行產(chǎn)生影響。

1.4語句與結(jié)構(gòu)控制

Crowbarf杠桿)中的語句與結(jié)構(gòu)控制語句與C語言是一樣的,含有if、while等語句。但是Crowbar(杠桿)與c語言、Java語言等編譯語言存在一些較大的差別,其中,Crowbar(杠桿)中不可以出現(xiàn)懸空else,因為不允許出現(xiàn)else語句,所以又引入了一種else if語句。當(dāng)程序中輸人break時,可以直接從最內(nèi)層的循環(huán)中跳出。Continue能夠跳過最內(nèi)層循環(huán)中剩余的代碼。而return可以從函數(shù)中退出,并在返回時將函數(shù)后面的值作為返回值。

1.5運算符

Crowbar(杠桿)中支持整數(shù)、實數(shù)字、字符串這些形式的常量可以作為操作數(shù)。不僅如此,Crowbar中的變量也可以作為操作數(shù)。將變量作為操作數(shù)能夠?qū)崿F(xiàn)與運算符和括號的結(jié)合,與運算符和括號進(jìn)行結(jié)合之后能夠組成更加復(fù)雜的表達(dá)式。

2Crowbar的主要模塊和命名規(guī)則

2.1模塊與命名規(guī)則

Crowbar(杠桿)中包含三個模塊,分別為Crowbar主程序簡稱CRB、內(nèi)存管理模塊,簡稱為MEM,Debug模塊,簡稱為DBG。這些模塊能夠完成一些特定的功能。每一個模塊中都包含著多個c.文件。MEM和DBG這兩個模塊能夠進(jìn)行通用,兩個模塊的代碼在Crowbar文件夾中的memory和debug的子文件夾中。

對C語言進(jìn)行深入的分析和研究能夠看出,C語言中不含有C++和C#的命名空間,同時,也不具有Java中的包機制,因此,需要制定相關(guān)的命名規(guī)則,來避免命名沖突問題的出現(xiàn)。本文中所介紹的語言設(shè)計中所采用的命名規(guī)則如下:

1)模塊在進(jìn)行命名時,開頭的三個字符必須是英文字母的大寫,例如:DVF。

2)進(jìn)行類的命名時,也要使用三個大寫字母開頭,同時,兩個英文單詞之間的連接需要使用大寫字母,例如DVF_Int。

3)在進(jìn)行變量命名和函數(shù)命名時,要使用小寫字母,如果出現(xiàn)兩個英文單詞的連接時,也要全部使用小寫的英文字母。例如:alloc_expression。

4)進(jìn)行宏命名時,所涉及的英文字母要全部使用大寫,需要下劃線進(jìn)行連接的英文單詞也要全部使用大寫。例如:IDENTIFlER_TABLE_ALLOC_SIZE。如果宏定義中帶有參數(shù),那么就要遵循帶函數(shù)的命名規(guī)則。例如:small(a,b).

5)模塊中會有一些函數(shù)時向外公開的,對于這些函數(shù)的命名,要使用模塊名+下劃線作為前綴,其中模塊名中的字母全部為大寫。例如:CRB_ereate_interpreter().

61對于模塊中不向外公開的函數(shù)需要用模塊的名字+下劃線的方式作為前綴,并全部采用小寫的方式。例如:crb_al-loc_expression。

7)用st_fV為函數(shù)外部的靜態(tài)變量名。

2.2內(nèi)存管理模塊

如果經(jīng)常使用c語言進(jìn)行編程,那么就會深刻地感受到c語言在進(jìn)行編程時,很容易就會遇到電腦內(nèi)存損壞的額情況,有時會出現(xiàn)忘記釋放內(nèi)存而導(dǎo)致泄露等問題。內(nèi)存會經(jīng)常出現(xiàn)一些BUG,讓人很苦惱。特別是在Crowbar編程中,還會涉及一些字符串型的變量,這些變量在進(jìn)行運算時可以借助“+”進(jìn)行連接,這也就要求內(nèi)存管理模塊中必須設(shè)計一個垃圾回收機制。鑒于上述的這些理由,將內(nèi)存管理模塊的功能進(jìn)行了設(shè)計。MEM為模塊名,根據(jù)上文中對模塊的命名規(guī)則,所有的公共函數(shù)都以MEM_為開頭。

1)借助MEM_malloc()能夠?qū)崿F(xiàn)內(nèi)存空間的配置,并且內(nèi)存空間開始處的默認(rèn)填充為oxCC。將OxCC作為開始處的默認(rèn)填充,能夠避免傳統(tǒng)的內(nèi)存空間出現(xiàn)遺漏初始化的現(xiàn)象。因為OxCC是一個沒有意義的值,因此不會出現(xiàn)遺漏這一情況。

2)當(dāng),MEM__reallocO作為擴(kuò)充內(nèi)存空間時,默認(rèn)的擴(kuò)充值為OxCC。

3)OxCC會隨著開辟的內(nèi)存空間釋放,這樣一來內(nèi)存空間釋放所引起的BUG就能夠被較早的發(fā)現(xiàn)。

4)如果內(nèi)存空間采用malloe()開辟,那么就需要借助free()來進(jìn)行釋放。

2.3調(diào)試模塊DBG

調(diào)試時會用到DBG模塊,這一模塊具有非常多的功能,如果是在Crowbar的程序中使用,那么只需要調(diào)用宏DBG_assert()以及DBG_panic()就可以。當(dāng)DBG在輸出時,可以借助DBG set debug_write fg()將輸出目標(biāo)進(jìn)行更改,盡管輸出目標(biāo)得到了更改,同樣stderr會保留一份相同的信息。如果輸出目標(biāo)不進(jìn)行更改,stderr將會輸出兩行一樣的信息。

3結(jié)束語

上文中借助C語言的語法特點以及程序編寫方式自定制了Crowbar(杠桿)的基本語法。對Crowbar(杠桿)中的程序結(jié)構(gòu)、數(shù)據(jù)類型、變量、語句與結(jié)構(gòu)控制、運算符等多方面的內(nèi)容都進(jìn)行了設(shè)計,特別是給出了一套模塊命名的規(guī)則以及內(nèi)存管理的方法。采用Crowbar語言,能夠為讀者的使用帶來非常大的方便。

猜你喜歡
設(shè)計方法
怎樣進(jìn)行漢語拼音的教學(xué)
基于用戶體驗的產(chǎn)品交互設(shè)計研究
古城墻中所包含的藝術(shù)文化解析
景觀設(shè)計中的兒童娛樂場所設(shè)計與探索
讓靈活精悍的微課程成為初中語文課堂的左膀右臂
文教資料(2016年20期)2016-11-07 11:37:21
低碳背景下標(biāo)準(zhǔn)化展示道具的設(shè)計方法
議傳統(tǒng)漢字圖形的設(shè)計方法
淺析兒童家具模塊化設(shè)計方法
人間(2016年26期)2016-11-03 19:16:30
話劇舞臺服裝設(shè)計方法探究
戲劇之家(2016年19期)2016-10-31 17:12:25
淺析旅游景區(qū)公共設(shè)施的設(shè)計
今傳媒(2016年9期)2016-10-15 23:14:14
主站蜘蛛池模板: 国产男女免费视频| 国产欧美视频综合二区| 欧美日韩在线成人| 欧美午夜网| 福利小视频在线播放| 2020极品精品国产| 日本午夜影院| 久久久久亚洲精品无码网站| 亚亚洲乱码一二三四区| 3344在线观看无码| 97狠狠操| 精品无码一区二区三区在线视频| 丁香亚洲综合五月天婷婷| 久久一本日韩精品中文字幕屁孩| 欧美国产另类| 亚洲日韩每日更新| 亚洲欧美在线综合图区| 啦啦啦网站在线观看a毛片| 波多野结衣视频一区二区| 精品无码一区二区三区电影| 欧美不卡视频一区发布| 制服丝袜国产精品| 97久久精品人人做人人爽| 国产成人夜色91| 免费一级毛片在线播放傲雪网| 亚洲黄色片免费看| 亚洲国产日韩欧美在线| 久久精品91麻豆| 日韩视频精品在线| 丁香六月综合网| 波多野结衣第一页| 天堂中文在线资源| 日韩毛片免费视频| 国产丰满成熟女性性满足视频| 99久久精品国产麻豆婷婷| 国产流白浆视频| 久久午夜夜伦鲁鲁片不卡| 爽爽影院十八禁在线观看| 国产玖玖视频| 亚洲欧美精品在线| 97青草最新免费精品视频| 国产小视频免费| 国产一级妓女av网站| 欧美一区二区三区香蕉视| 国产一区自拍视频| 成人无码一区二区三区视频在线观看| 欧美一区精品| 久久亚洲AⅤ无码精品午夜麻豆| 国产精品久久久精品三级| 日本手机在线视频| 国产一在线| 中文字幕欧美日韩| 青青青国产在线播放| 亚洲毛片在线看| 国产精品欧美激情| 国产欧美日韩精品综合在线| 中文字幕无线码一区| 成年女人a毛片免费视频| 欧美日韩在线第一页| 亚洲AⅤ综合在线欧美一区| jizz国产视频| 无码 在线 在线| 伦伦影院精品一区| 成人伊人色一区二区三区| 国产亚洲欧美另类一区二区| 亚洲五月激情网| 久久久久久高潮白浆| 国产96在线 | 国产成人喷潮在线观看| 五月六月伊人狠狠丁香网| 91福利一区二区三区| 国模粉嫩小泬视频在线观看| 国产地址二永久伊甸园| 国产精品刺激对白在线| 啪啪国产视频| 亚洲精品自拍区在线观看| 午夜精品影院| 日本高清有码人妻| 爱色欧美亚洲综合图区| 国产视频欧美| 国产自视频| 欧美另类视频一区二区三区|