版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一門數(shù)值計算領(lǐng)域特定語言的設(shè)計與實現(xiàn)一門數(shù)值計算領(lǐng)域特定語言的設(shè)計與實現(xiàn)數(shù)學(xué)與計算機(jī)系計算機(jī)科學(xué)與技術(shù)專業(yè)數(shù)學(xué)與計算機(jī)系計算機(jī)科學(xué)與技術(shù)專業(yè)118532010057118532010057翁志成指導(dǎo)老師郭永寧翁志成指導(dǎo)老師郭永寧【摘要】【摘要】程序設(shè)計語言作為人類與計算機(jī)交流的工具,在軟件開發(fā)中起到至關(guān)重要的作用。常規(guī)的傳統(tǒng)程序設(shè)計語言作為人類與計算機(jī)交流的工具,在軟件開發(fā)中起到至關(guān)重要的作用。常規(guī)的傳統(tǒng)編程語言功能強(qiáng)大,語法規(guī)則繁雜,
2、它們可以用來解決各式各樣的問題。但是編程語言功能強(qiáng)大,語法規(guī)則繁雜,它們可以用來解決各式各樣的問題。但是現(xiàn)今的編程任務(wù)已經(jīng)涉及到現(xiàn)今的編程任務(wù)已經(jīng)涉及到生活中方方面面,不同領(lǐng)域的問題必然會抽象出不同的問題模型,這時用常規(guī)的單一的編程語言對問題進(jìn)生活中方方面面,不同領(lǐng)域的問題必然會抽象出不同的問題模型,這時用常規(guī)的單一的編程語言對問題進(jìn)行建模描述必然會造成種種不便。因此,領(lǐng)域特定語言(行建模描述必然會造成種種不便。因此,領(lǐng)域特定語言(DS
3、LDSL,domainspecificlanguagedomainspecificlanguage)的設(shè)計就不可)的設(shè)計就不可避免。避免。領(lǐng)域特定語言通常也擁有常見的邏輯控制結(jié)構(gòu),在語言內(nèi)部設(shè)置問題域內(nèi)必要的方便用來對問題進(jìn)領(lǐng)域特定語言通常也擁有常見的邏輯控制結(jié)構(gòu),在語言內(nèi)部設(shè)置問題域內(nèi)必要的方便用來對問題進(jìn)行建模的數(shù)據(jù)類型和運(yùn)算符,一般以解釋執(zhí)行的方式運(yùn)行。本課題就是要設(shè)計并實現(xiàn)一門數(shù)值計算方面的行建模的數(shù)據(jù)類型和運(yùn)算符,一般以解釋執(zhí)
4、行的方式運(yùn)行。本課題就是要設(shè)計并實現(xiàn)一門數(shù)值計算方面的領(lǐng)域特定語言。領(lǐng)域特定語言?!娟P(guān)鍵詞】【關(guān)鍵詞】編程語言;領(lǐng)域特定語言;解釋器編程語言;領(lǐng)域特定語言;解釋器11.引論1.1語言處理器程序設(shè)計語言是人們向計算機(jī)描述計算過程的記號。如我們所知,這個世界依賴于程序設(shè)計語言,因為在所有計算機(jī)上運(yùn)行的所有軟件都是用某種程序設(shè)計語言編寫的。但是在一個程序可以運(yùn)行之前,它首先要被解釋成一種能夠被計算機(jī)理解的形式。完成這項任務(wù)的軟件系統(tǒng)可以使用編
5、譯器或解釋器。簡單地說,一個編譯器就是一個程序,它可以閱讀用某一種語言編寫的程序,然后將其翻譯成功能相同的其他語言的程序。解釋器是另一種常見的語言處理程序。它并不將源程序翻譯成目標(biāo)語言所能執(zhí)行的程序,而是直接讀入用戶的輸入并執(zhí)行相對應(yīng)的操作。要執(zhí)行某種語言編寫的程序,要么把它翻譯成一種能直接執(zhí)行的語言編寫的程序,要么就借助于解釋器直接解釋執(zhí)行。常見的程序設(shè)計語言以規(guī)模的大小或者說功能的完善程度可以分為DSL(DomainSpecific
6、Language)和GPPL(GeneralPurposeProgramLanguage)兩類。對于DSL來說,易于實現(xiàn)比起執(zhí)行效率更重要。由于實現(xiàn)起來容易,所以DSL及大部分的動態(tài)類型語言多采用解釋執(zhí)行的方式運(yùn)行。本課題亦采用解釋執(zhí)行的方式來實現(xiàn)所設(shè)計的語言的執(zhí)行。雖然大多數(shù)的語言可以既可被編譯(Compiled)又可被解釋(Interpreted),但大多數(shù)只在一種情況下能夠良好運(yùn)行。在一些編程系統(tǒng)中,程序要經(jīng)過幾個階段的編譯,一般
7、而言,后階段的編譯往往更接近機(jī)器語言。這種常用的使用技巧最早在1960年代末用于BCPL,編譯程序先編譯一個叫做“0代碼”的轉(zhuǎn)換程序(representation),然后再使用虛擬器轉(zhuǎn)換到可以運(yùn)行于機(jī)器上的真實代碼。這種成功的技巧之后又用于Pal和Pcode,以及Smalltalk和二進(jìn)制碼,雖然在很多時候,中間過渡的代碼往往是解譯,而不是編譯的。如果所使用的翻譯的機(jī)制是將所要翻譯的程序代碼作為一個整體翻譯,并之后運(yùn)行內(nèi)部格式,那么這個
8、翻譯過程就稱為編譯。因此,一個編譯器是一個將可閱讀的程序文本(叫做源代碼)作為輸入的數(shù)據(jù),然后輸出可執(zhí)行文件(objectcode)。所輸出的可執(zhí)行文件可以是機(jī)器語言,由計算機(jī)的中央處理器直接運(yùn)行,或者是某種模擬器的二進(jìn)制代碼。如果程序代碼是在運(yùn)行時才即時翻譯,那么這種翻譯機(jī)制就被稱作解譯。經(jīng)解譯的程序運(yùn)行速度往往比編譯的程序慢,但往往更具靈活性,因為它們能夠與執(zhí)行環(huán)境互相作用。1.2一個解釋器的結(jié)構(gòu)一個解釋器主要由兩個部分組成:分析部
9、分和執(zhí)行部分。分析部分是把源程序分解成多個組成要素,并在這些要素之上加上語法結(jié)構(gòu)。然后用這個結(jié)構(gòu)來創(chuàng)建一個該源程序的一個中間表示。如果分析部分檢查出源程序不符合正確的語法構(gòu)成,或者語義上不一致,它就必須提供有用的信息,使得用戶可以按此進(jìn)行修改[1]。執(zhí)行部分是根據(jù)分析部分生成的程序的中間表示以及其他的一些有用的信息執(zhí)行相應(yīng)的語義動作。此外,分析部分還可以細(xì)分成詞法分析和語法分析[9]。1.3程序設(shè)計語言的發(fā)展歷史程序設(shè)計語言的發(fā)展大致經(jīng)
10、過了三個階段,第一代的程序設(shè)計語言是只有01序列組成的機(jī)器語言,無論在學(xué)習(xí)過程,調(diào)試或者修改時都存在極大地困難。第二代的計算語言是匯編語言,它可以看做是機(jī)器語言的指意性表示,表達(dá)方式更加接近自然語言,但匯編語言還是與特定的計算機(jī)處理器相關(guān)的,程序的可移植性很差。第三代計算語言包括我們常見的CC,Java等等,它們各有特色,融入了許多當(dāng)代編程的理論作為語言特色,較以前的編程語言學(xué)習(xí)起來更加簡單,且程序的可移植性很高。第四代編程語言還處在發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論