freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ttcn3編譯技術(shù)研究與實現(xiàn)碩士畢業(yè)論文(編輯修改稿)

2024-07-25 09:52 本頁面
 

【文章內(nèi)容簡介】 TTCN3 Runtime Interface,TRI)[28]和控制接口(TTCN3 Control Interface ,TCI)[29]。TTCN3使用靈活、功能強大,能通過各種通信接口應(yīng)用于不同的測試系統(tǒng),它在TTCN2的基礎(chǔ)上增加了許多新的功能[21],比如:① 不同的表示形式。② 動態(tài)并發(fā)的測試配置。③ 同步和異步通信操作。④ 信息編碼和其它屬性的描述。⑤ 數(shù)據(jù)和簽名模板具有功能強大的匹配機制。⑥ 類型和值的參數(shù)化。⑦ 測試判決的制定和處理。⑧ 測試集的參數(shù)化和測試例的選擇機制。⑨ (如IDL[30]、UML[31])的聯(lián)合使用。 國內(nèi)外相關(guān)編譯技術(shù)研究現(xiàn)狀早在80年代,在TTCN標準剛制定后不久,國內(nèi)外就有一些研究機構(gòu)對TTCN支撐工具進行研究。一些研究機構(gòu)把用TTCN描述的測試集轉(zhuǎn)換為各自的測試描述語言的形式, 再轉(zhuǎn)換為可執(zhí)行測試集。比如英國國家物理實驗室將TTCN轉(zhuǎn)換為測試描述語言TDL[32], 加拿大IDICOM公司將TTCN轉(zhuǎn)換為其專用測試語言ITL。TDL通過編譯而ITL則采用解釋的形式來執(zhí)行測試集。而另外一些研究機構(gòu)則直接將TTCN描述的測試集進行解釋或編譯。比如國際上有的研究機構(gòu)曾對TTCN的直接解釋執(zhí)行做了嘗試 [33,34];國內(nèi)對TTCN的支撐工具開發(fā)得比較成功和完善的是中科院成都計算機應(yīng)用研究所在開發(fā)OSI第4類傳送層協(xié)議測試系統(tǒng)時所開發(fā)的TTCN編譯器 [20]。 近些年,隨著TTCN3的普及和IPv6測試系統(tǒng)的出現(xiàn),一些研究機構(gòu)正在研究開發(fā)TTCN3支撐工具。例如testing_tech[18]公司開發(fā)出的 TTthree系列工具,實現(xiàn)了對TTCN-3到C語言的編譯以及TTCN3到JAVA語言的編譯;OpenTTCN Oy[35]公司開發(fā)的 OpenTTCN 測試儀工具中的 TTCN-3編譯器;國內(nèi)的TTCN3支撐工具的開發(fā)多為TTCN3解釋器[33]。 TTCN3/C編譯程序的總體設(shè)計 TTCN3編譯階段劃分TTCN3描述的測試控制數(shù)據(jù)(測試例/組/集)到可執(zhí)行測試數(shù)據(jù)的編譯過程,一般分為兩個步驟。第一個步驟是將TTCN3描述的測試控制數(shù)據(jù)編譯成某種程序設(shè)計語言的表達形式,第二步再利用該程序設(shè)計語言的編譯程序編譯成可執(zhí)行測試數(shù)據(jù)。這樣做具有多方面的優(yōu)點。首先,它可以利用現(xiàn)有的程序設(shè)計語言的編譯程序?qū)崿F(xiàn)向機器代碼的轉(zhuǎn)換功能,因而不必與機器代碼打交道,將研究的重點放在TTCN3和高級語言的轉(zhuǎn)換上。其次,它容易實現(xiàn)將編譯的中間結(jié)果,即某種程序設(shè)計語言表達的代碼,與用同種程序設(shè)計語言開發(fā)的測試系統(tǒng)其它部件的實現(xiàn)代碼進行聯(lián)合編譯,得到完整的可執(zhí)行測試程序。最后,由于大眾化的程序設(shè)計語言都具有較好的可移植性,因此TTCN3編譯程序和編譯中間代碼都便于在多種平臺之間移植。本編譯器采用的就是這種設(shè)計思路,即設(shè)計為TTCN3到C語言的編譯器。TTCN3測試例經(jīng)過編譯生成完整的C程序文件,再用通用的C編譯器及相關(guān)鏈接、裝載工具,生成最終可執(zhí)行的程序。 TTCN3/C編譯程序設(shè)計范圍的界定TTCN3是一個相當復(fù)雜的測試控制描述語言,其中許多功能在測試實踐中可以不用或難于理解。從IPv6路由器測試的需要和開發(fā)周期上的考慮,我們界定第一版的TTCN3/C編譯程序只支持TTCN3功能的一個子集。由于我們選擇了C語言作為中間語言,因此,在滿足測試需要的前提下,盡量選擇了TTCN3中其語法和語義較容易在C中找到對應(yīng)關(guān)系的語法結(jié)構(gòu),特別是那些容易實現(xiàn)直接轉(zhuǎn)換或者通過構(gòu)造C語言的類(Class)結(jié)構(gòu)來實現(xiàn)的語法結(jié)構(gòu)。對于錯誤處理,在詞法和語法分析階段,我們簡單地報告出錯地點,然后停止編譯。而在語義分析階段,我們報告出錯地點和具體的錯誤類型,但并不停止編譯。 TTCN3/C編譯程序的階段編譯器[3638]是將一種語言翻譯為另一種語言的計算機程序。編譯器以某種語言(Source Language )編寫的程序作為輸入(源程序),經(jīng)過處理生成與源程序等價的用目標語言(Target Language)表達的程序。編譯程序的工作一般可以分為五個主要階段:詞法分析、語法分析、語義分析、中間代碼產(chǎn)生、目標代碼生成[36]。TTCN3/C編譯程序的設(shè)計可以參照這五個階段劃分相關(guān)的功能模塊。編譯程序中一般還應(yīng)包括“表格管理”和“出錯處理”兩部分內(nèi)容。在編譯程序中最重要的表格是符號表,它記錄源程序中定義的所有名字以及其各種屬性[36]。根據(jù)需要,編譯程序還可能包括對生成的代碼進行優(yōu)化的過程。不過考慮到在本設(shè)計中功能盡可能簡化,加上后續(xù)的C編譯器大多具有代碼優(yōu)化的功能,所以目前的TTCN3/C編譯器中未考慮代碼優(yōu)化的問題。圖21為典型編譯程序的編譯階段和功能劃分示意圖[36]。源程序詞法分析器語法分析器語義分析器錯誤分析器符號表管理器中間代碼生成器代碼優(yōu)化器代碼生成器目標程序圖21 典型編譯器程序階段和功能劃分 編譯過程的“遍數(shù)”上一節(jié)討論的編譯程序的五個階段,是按邏輯功能進行劃分的。具體實現(xiàn)時,考慮到源語言的差異、設(shè)計要求以及實際處理的方便性和合理性等因素,往往很難一次完成全部的編譯工作,而需要從頭到尾對源程序或源程序的中間結(jié)果進行多次掃描,每一次掃描僅完成部分加工處理,并生成中間結(jié)果或目標程序。掃描一次在編譯術(shù)語中稱為一“遍”(PASS)[36]。編譯器掃描遍數(shù)的確定主要是在時間和空間效率上進行權(quán)衡[37],此外也涉及算法復(fù)雜度的問題,因此在一遍掃描過程中,可能會處理圖21中的多個階段功能。如果只采用一遍掃描,編譯程序在設(shè)計和實現(xiàn)上難度太大,生成的編譯器難以維護;多遍掃描對路由器的測試效率影響較大;而兩遍掃描,由于前后兩遍的設(shè)計相對獨立而本編譯器由兩個小組成員分別完成,可以較明確地進行小組分工與合作,因此本編譯器采用了兩遍掃描處理的方式。如圖22所示,第一遍掃描讀入TTCN3源程序,并對其進行詞法分析、語法分析和語義分析,其輸出為語法樹和符號表。第二遍掃描的輸入是第一遍生成的語法樹,通過對語法樹的遍歷,結(jié)合符號表登記的信息來生成C代碼。筆者的研究重點是第二遍掃描,即C代碼生成方面的工作。TTCN3源程序語法樹分析器第一遍掃描符號表C程序代碼生成第二遍掃描圖22 TTCN3/C編譯器的遍 第3章 詞法、語法與語義分析 詞法分析 詞法分析簡介詞法分析是編譯過程的第一個階段。這個階段的主要任務(wù)是從左到右逐個字符地讀入TTCN3源程序,產(chǎn)生單詞符號序列,以提交給語法分析使用 [38]。詞法分析還可以完成一些相關(guān)的輔助任務(wù)[37],一個是濾掉源程序中的注釋、空格、制表符和換行符等不影響程序執(zhí)行的代碼,另一個是使編譯器能將發(fā)現(xiàn)的錯誤信息與源程序的出錯位置聯(lián)系起來。編譯技術(shù)發(fā)展到現(xiàn)在,詞法分析已經(jīng)非常成熟,并有了很多通用的工具,因為詞法分析通常與編譯程序的源語言和目標語言無關(guān)。詞法分析的基礎(chǔ)是源語言的詞法規(guī)則,一般用正則表達式[36]來表示。 用LEX構(gòu)造詞法分析器最具代表性的詞法分析器生成工具是LEX[3942]系列,本編譯器采用其中的FLEX[42]版本。如圖31所示,LEX的輸入為LEX語言的程序,它包含對源語言詞法構(gòu)成的正規(guī)式描述,詞法分析器對詞法結(jié)構(gòu)識別匹配后的即時處理動作,以及其它輔助過程三大部分。經(jīng)過LEX工具的編譯,將該LEX語言的程序轉(zhuǎn)換為一個C宿主語言的程序yylex。將yylex加入到我們的編譯器中,就是我們的詞法分析器。FLEX的通用性、可靠性和以C為宿主語言等特點是我們選擇的主要原因。輸入串圖31 LEX在編譯系統(tǒng)中的作用LEX編譯系統(tǒng)yylexLEX源程序yylex單詞符號串LEX源程序的格式如下 [38]:說明部分%%轉(zhuǎn)換規(guī)則%%輔助過程在本編譯器中。,它們決定了TTCN3的詞法構(gòu)成,并區(qū)分了換行符和其它的空白字符;轉(zhuǎn)換規(guī)則部分定義了單詞識別的即時處理,通常是返回一個代表該類單詞的ID值,包括TTCN3的136個保留字和24類終結(jié)符;輔助過程部分定義了一些輔助的C程序段,供詞法分析器或編譯程序調(diào)用。 詞法分析器的輸出結(jié)果詞法分析器的輸出是由源程序中的輸入字符串組成的單詞符號串。這些單詞符號可以被分為各種類型,如保留字、名字、數(shù)值、元字符等。在LEX的源程序中嵌入打印代碼,可以在詞法分析器識別一個單詞符號的同時輸出該單詞符號的信息。例如,讀入以下一小段TTCN3程序:module Architecture { import from DataTypes recursive all。 group Port_Definitions_Group { type port IPPortType mixed { inout NDMessageType, NDProcedureType } } group Component_Definitions_Group { type ponent NetworkNode { port IPPortType NSAP。 } }}詞法分析器的打印輸出為:1: reserved word: module1: ID, name= Architecture1: {2: reserved word: import2: reserved word: from2: ID, name= DataTypes2: reserved word: recursive2: reserved word: all2: 。3: reserved word: group3: ID, name= Port_Definitions_Group3: {4: reserved word: type4: reserved word: port4: ID, name= IPPortType4: reserved word: mixed4: {5: reserved word: inout5: ID, name= NDMessageType5: ,5: ID, name= NDProcedureType6: }7: }8: reserved word: group8: ID, name= Component_Definitions_Group8: {9: reserved word: type9: reserved word: ponent9: ID, name= NetworkNode9: {10: reserved word: port10: ID, name= IPPortType10: ID, name= NSAP10: 。11: }12: }13: }14: EOF以上輸出信息包括單詞符號在源程序中的行位置、單詞符號的類型、單詞符號的屬性等三部分。 詞法分析的錯誤處理一個好的編譯程序應(yīng)能最大限度地發(fā)現(xiàn)源程序中的各種錯誤,準確地指出錯誤的性質(zhì)和發(fā)生錯誤的地點,并且能將錯誤所造成的影響限制在盡可能小的范圍內(nèi),使得源程序中的其余部分能繼續(xù)被編譯下去,以便進一步發(fā)現(xiàn)其它可能的錯誤[36]。詞法分析的輔助任務(wù)之一是使編譯器能將發(fā)現(xiàn)的錯誤信息與源程序的出錯位置聯(lián)系起來,在本編譯器中詞法分析就要負責記錄遇到的換行符的個數(shù),以便將行號與出錯信息聯(lián)系起來?,F(xiàn)階段我們對詞法分析的錯誤處理比較簡單,就是當發(fā)現(xiàn)詞法錯誤就停下來,并指出錯誤的位置。 語法分析 語法分析簡介語法分析是編譯過程的第二個階段,是編譯程序的核心部分。語法分析的作用是識別由詞法分析給出的單詞符號串序列是否滿足給定的文法,組成語法上正確的句子 [38],并最終生成一棵語法樹或分析樹[36],供后續(xù)編譯使用。語法分析技術(shù)同樣非常成熟,有很多通用的工具。語法分析的基礎(chǔ)是源語言的語法規(guī)則,通常用BNF表達式[36]來表示。 用YACC工具構(gòu)造語法分析器最具代表性的語法分析器生成工具是YACC[4349]系列,本編譯器采用其中的BISON[48,49]版本。如圖32所示,YACC的輸入為YACC語言的程序,它包含對源語言語法規(guī)則的描述,語法分析器對語法結(jié)構(gòu)識別匹配后的即時處理動作,以及其它輔助過程。經(jīng)過YACC工具的編譯,將該YACC語言的程序轉(zhuǎn)換為一個C宿主語言的程序yyparse。將yyparse加入到我們的編譯器中,就是我們的語法分析器。YACC同樣以C語言為宿主語言。YACC的源程序的格式如下[38]:說明部分%%語法規(guī)則部分%%程序段部分本編譯器中,YACC源程序的說明部分包括了用來建立分析程序的有關(guān)記號、優(yōu)先級說明、數(shù)據(jù)類型等;語法規(guī)則部分包括依據(jù)TTCN3的BNF書寫的將近600條語法規(guī)則;程序段部分包括了過程和函數(shù)聲明的C程序段。依據(jù)TTCN3的BNF來編寫YACC需要的語法規(guī)則是語法分析實現(xiàn)的主要工作。YACC源程序YACC編譯系統(tǒng)yyparse輸入串yyparse語法樹/分析樹圖32 YACC編譯系統(tǒng)的作用 與詞法分析的結(jié)合在本編譯器中,語法分析和詞法分析在一遍掃描內(nèi)完成,詞法分析被看作是語法分析的一個子程序,當語法分析需要輸入單詞符號時就調(diào)用詞法分析。LEX和YACC的關(guān)系[38]如圖33所示。詞法規(guī)則語法規(guī)則YACCLEX輸入串語法分析輸出單詞符號串yyparseyylex 圖33 LEX和YACC的關(guān)系 語法規(guī)則的沖突處理由于TTCN3的BNF很龐大、TTCN3語言本身存在二義性、以及YACC
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1