版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西南交通大学研究生学位论文TCN-3编译技术研究与实现 TOC o 1-5 h z 年级姓名申请学位级别专业指导教师二 O O 级 钱 向 红 硕士计算机应用技术 曾华燊 教授二OO四年十一月Classified Index: TP314U.D.C: 681.3.06Southwest Jiaotong UniversityMaster Degree ThesisRESEARCH ON TTCN-3 COMPILINGTECHNIQUES AND IMPLEMENTATIONGrade: 2001Candidate: Qian XianghongAcademic Degree Applied
2、for: MasterMajor: Computer ApplicationSupervisor: Prof. Zeng HuashenNov. 2004西南交通大学硕士研究生学位论文第II页西南交通大学硕士研究生学位论文第I页摘要本论文的研究背景是:IPv6协议集的测试,特别是对IPv6路由器设备的 测试技术已经成为从现有In ternet向基于IPv6的NGI (Next Ge nerati on In terne) 过渡的关键技术之一;现代路由器以多端口和高速化为特征,对路由器产品 的符合协议标准的测试、性能测试难度增加。为了能够模拟路由器的真实工作 环境,对路由器的功能与性能指标进行全
3、面的测试,四川省网络通信重点实验 室开展了对多端口路由器并发测试技术的研究和测试系统的开发工作。本论文 反映的工作是该项目的子系统 “双端口测试系统” (TPT -Two Port Teste)中的 “测试支撑工具研究”,即如何将用TTCN-3语言描述的测试控制数据转变为测 试系统中的可执行测试数据。传统上这一转换过程可以采用两种方式:解释与编译。目前已有的测试系 统中采用解释方式的较多,即“边解释边执行”的测试方法。笔者及其同事在分析了现代高速路由器的测试需要的基础上,在存储空间的占用量和可执行代 码修改的方便性,与测试实时性要求的矛盾中,选择了“缩短联机处理时间” 优先的策略,采用对TTC
4、N-3描述的测试控制数据进行编译的技术路线。TTCN-3的编译过程与传统的编译过程类似,包括词法分析、语法分析、语 义分析和代码生成4个阶段。为了与测试系统中其它部件整合,编译器采用两 步编译的方式,第一步将TTCN-3语言转换成C语言代码,第二步将C代码与 测试系统的其它组成部分联合编译,最终生成可执行代码。由于最终的可执行 代码将由C编译器完成,因此在TTCN-3/C的编译过程中没有考虑代码生成的 优化问题。编译器采用两遍扫描,第一遍扫描读入TTCN-3源程序,并对其进行词法分析、语法分析和语义分析。第二遍遍历第一遍输出的语法树,结合符 号表来生成目标C代码。笔者的工作涉及词法、语法和语义
5、分析,但研究重点在于代码生成部分的 设计与实现。由于TTCN-3编译器是双端口测试系统的支撑工具,因此与测试 系统相关。编译后的C代码将与单测试例遍历软件(Traverser)和编解码器(E/D - Encoder/Decoder联合进行C编译,最终形成可执行的单测试例测试代码, 因此 TTCN-3/C编译器还需要充分考虑与二者的结合问题。 鉴于研究中的多端口并发 测试必须依赖双端口测试器作为基本测试单元,使其能够集中于对多端口并发测试的控制问题,而本文反映的工作主要是双端口测试系统支撑工具的研究与 开发,也是下一阶段的多端口并发测试系统的基础。关键词:编译器;TTCN-3 ;语法分析;代码生
6、成西南交通大学硕士研究生学位论文第IV页西南交通大学硕士研究生学位论文第III 页AbstractThe backgro und of the research work prese nted in this dissertatio n in elude: A) Testi ng of IPv6 protocol stack, especially IPv6 routers, has become one of the key tech no logies to migrate from the existi ng Internet to the emerg ing Next Gen erat
7、i on Intern et, and B) Existi ng tech niq ues in con forma nee and performa nee test ing for modern high-speed routers with multiple ports are in adequate. In order to test a router thoroughly, it is prerequisite to emulate its external real working conditions. However, existing testing techniques a
8、re not fledged for this purpose. Sichuan Network Communication Key Laboratory (SC-NETCOM LAB) has been researchi ng on the tech niq ues for multi-port con curre nt test and develop ing the Con curre nt Multi-Port Test System (CMPTS), of which the Two Port Tester (TPT) forms an important part. The wo
9、rk presented in this dissertation is dedicated to TTCN-3 translation techniques for TPT, which translates the test control data in TTCN-3 to executable codes.There are two typical approaches in tran slati ng specificati ons in program ming Ian guages: in terpreti ng or compili ng, of which in terpre
10、ti ng approach is most widely used in han dli ng TTCN-3 specificatio ns. In view that moder n routers are high-speed devices with multi-ports, therefore short on-line processing time should have higher priority in system desig n compared with other features such as storage requireme nts and flexibil
11、ity in modification of executable codes, and consequently the compiling approach is adopted.Compiling of test specifications in TTCN-3 is similar to other compiling processes,which invoIve lexical analysis, syntax analysis, semantic analysis, and code gen erati on. In order to in corporate the compi
12、led codes with other parts in TPT, a two-stage compiling approach is designed: first the specifications in TTCN-3 is compiled in to C” and the n to compile in to machi ne executable codes. No code-optimization has been considered in TTCN-3/C compiling and left it for the C” compiler. The TTCN-3/C co
13、mpiler first scans the source code in TTCN-3, performs syn tax an alysis and sema ntic an alysis, and fin ally gen erates the C code via seanning through the syntax tree in conjunction with symbol tables.The authors work invoIves lexical analysis, syntax analysis, and semantic an alysis, and an emph
14、asis has bee n give n to tech niq uesof code gen erati on. As the TTCN-3/C compiler is the support tool for TPT, to some exte nt it is tester-depe ndent. Therefore, the resultant C” code for test control data has to be jointly compiled into machine code with C” code for the traverser (which traverse
15、s through a single test case) and with the E/D (Encoder/Decoder) of PDU (Protocol Data Units) of the protocol under test. The significance of work presented in the dissertation not only provides an important tool for TPT but also provides a basis for CMPTS under developme nt, which leaves the burde
16、n of con trol of a pair of ports to TPT.Key words: compiler, TTCN-3, syn tax an alysis, code gen erati on西南交通大学硕士研究生学位论文第VII页西南交通大学硕士研究生学位论文第V页 TOC o 1-5 h z HYPERLINK l bookmark6 o Current Document 摘要I HYPERLINK l bookmark8 o Current Document Abstract1U.目录V. HYPERLINK l bookmark12 o Current Documen
17、t 第1章绪论1. HYPERLINK l bookmark14 o Current Document 1.1本论文的研究背景 1. HYPERLINK l bookmark16 o Current Document 1.1.1研究IPv6网络协议测试技术的意义 1 HYPERLINK l bookmark18 o Current Document 1.1.2国内外IPv6路由器测试技术现状 1 HYPERLINK l bookmark20 o Current Document IPv6路由器并发多端口测试系统 2 HYPERLINK l bookmark22 o Current Docume
18、nt 1.2.1传统路由器测试技术与系统的局限性 2 HYPERLINK l bookmark24 o Current Document 1.2.2并发多端口测试技术与测试系统 3 HYPERLINK l bookmark26 o Current Document 1.2.3测试控制管理器与测试支撑工具 4 HYPERLINK l bookmark28 o Current Document 1.3本论文反映的研究与开发工作及主要特点 5 HYPERLINK l bookmark30 o Current Document 1.4论文组织结构6. HYPERLINK l bookmark32 o
19、Current Document 第2章TTCN-3/C编译程序总体设计7 HYPERLINK l bookmark34 o Current Document 2.1 TTCN-3的发展及特点 7. HYPERLINK l bookmark36 o Current Document 2.2国内外相关编译技术研究现状 8. HYPERLINK l bookmark38 o Current Document TTCN-3/C编译程序的总体设计 8 HYPERLINK l bookmark40 o Current Document TTCN-3编译阶段划分.8. HYPERLINK l bookma
20、rk42 o Current Document TTCN-3/C编译程序设计范围的界定 9 HYPERLINK l bookmark44 o Current Document TTCN-3/C编译程序的阶段 9 HYPERLINK l bookmark46 o Current Document 2.3.4编译过程的“遍数” 10 HYPERLINK l bookmark48 o Current Document 第3章词法、语法与语义分析 12 HYPERLINK l bookmark50 o Current Document 3.1词法分析12 HYPERLINK l bookmark52
21、o Current Document 3.1.1词法分析简介 12 HYPERLINK l bookmark54 o Current Document 3.1.2用LEX构造词法分析器 12 HYPERLINK l bookmark56 o Current Document 3.1.3词法分析器的输出结果 13 HYPERLINK l bookmark58 o Current Document 3.1.4词法分析的错误处理 15 HYPERLINK l bookmark60 o Current Document 3.2语法分析15 HYPERLINK l bookmark62 o Curren
22、t Document 321语法分析简介15 HYPERLINK l bookmark64 o Current Document 322用YACC工具构造语法分析器 15 HYPERLINK l bookmark66 o Current Document 3.2.3与词法分析的结合 1.6 HYPERLINK l bookmark68 o Current Document 3.2.4语法规则的冲突处理 17 HYPERLINK l bookmark76 o Current Document 3.2.5语法树20 HYPERLINK l bookmark86 o Current Document
23、 3.2.6语法分析的错误处理24 HYPERLINK l bookmark88 o Current Document 3.3语义分析24 HYPERLINK l bookmark90 o Current Document 3.3.1语义分析简介24 HYPERLINK l bookmark92 o Current Document 3.3.2在YACC中实现语义分析 24 HYPERLINK l bookmark94 o Current Document 3.3.3符号表25 HYPERLINK l bookmark98 o Current Document 3.3.4语义分析的输出27 H
24、YPERLINK l bookmark108 o Current Document 3.3.5语义分析的错误处理28 HYPERLINK l bookmark110 o Current Document 第4章代码生成29 HYPERLINK l bookmark112 o Current Document 4.1代码生成简介 29 HYPERLINK l bookmark114 o Current Document 4.2目标代码的形式29 HYPERLINK l bookmark116 o Current Document 4.3代码生成的基本思路30 HYPERLINK l bookma
25、rk118 o Current Document 4.4与编解码器的接口 31 HYPERLINK l bookmark120 o Current Document 4.5与单测试例驱动程序的接口问题 32 HYPERLINK l bookmark122 o Current Document 4.6语法结构的实现33 HYPERLINK l bookmark124 o Current Document TTCN-3类型的实现.33 HYPERLINK l bookmark126 o Current Document TTCN-3声明的实现 .35 HYPERLINK l bookmark128
26、 o Current Document TTCN-3函数和可选步的实现37 HYPERLINK l bookmark136 o Current Document TTCN-3程序语句和操纵的实现 38 HYPERLINK l bookmark194 o Current Document TTCN-3预定义函数的实现 43 HYPERLINK l bookmark202 o Current Document 4.7语法规则的筛选45 HYPERLINK l bookmark204 o Current Document 第5章编译程序的调试46 HYPERLINK l bookmark206 o
27、Current Document 5.1词法和语法调试46 HYPERLINK l bookmark230 o Current Document 5.2编译程序调试 49 HYPERLINK l bookmark242 o Current Document 5.3编译程序的执行 50 HYPERLINK l bookmark248 o Current Document 第6章总结与展望52 HYPERLINK l bookmark250 o Current Document 6.1论文工作总结 52 HYPERLINK l bookmark252 o Current Document 6.2后
28、续工作展望52 HYPERLINK l bookmark254 o Current Document 致谢54.参考文献55攻读硕士学位期间发表的论文及科研成果 58西南交通大学硕士研究生学位论文第 页第1章绪论1.1本论文的研究背景1.1.1研究IPv6网络协议测试技术的意义随着In ternet的飞速发展,原有的IPv4协议集逐渐显露出其IP地址匮乏、 存在网络安全漏洞、不能适应面向流的应用数据传输的缺点。为了解决In ternet目前和将来可能遇到的问题,In ternet Engin eeri ng Task Force (IETF)定义了新的 网络层协议“IPv6” 2 o IPv6
29、的出现使网络层内部的相关协议及网络层以上的 协议,如与路径信息交换和网络管理相关的传送层协议等也需要做相应的适应 性改造。以IPv6为基础的网络即被视为下一代In ternet (NGI)。网络设计与运行实践表明,由于多方面原因,即使是同一协议或协议集的 实现并不一定完全符合相关的协议,也不一定能够正确地交换信息,因此需要 对协议进行是否符合相关标准的测试(Conformance Test)。对于重要的网络设备 如路由器等,还需要对其性能指标进行测试。为此,从上世纪80年代初期,国际上就开展了对网络协议实现进行测试的技术研究。国际标准化组织ISO并于80年代中期制订了“ OSI协议测试框架”标
30、准,即ISO IS 96463。我国网络建设的发展需要大量的网络产品,特别是路由器和交换机产品, 而过去由于我国自身缺少检测手段,对外国产品只能全盘接受。目前我国正进 行下一代In ternet的建设,并进行了大量的基于IPv6的产品开发工作,迫切需 要对相关网络产品的检验手段和网络检测与维护手段。因此,研究相关测试技 术、独立开发我国的网络产品测试系统和建立我国的网络产品测试中心,就具 有十分重要的意义。1.1.2国内外IPv6路由器测试技术现状路由器作为In ternet的核心设备,在网络产业的发展和网络建设中占有举足 轻重的地位,因此对以IPv6为基础的路由器产品的测试技术的研究就具有特
31、殊 的意义。为了实现从IPv4向IPv6网络的过渡,路由器对IPv6的支持大体上采 用两种模式:一种是IPv6 over IPv4的模式,另一种是无IPv4的独立IPv6模式。前者借助于已有的IPv4平台,将IPv6协议分组包装在IPv4报文之中。这种模 式的优点是IPv6网络的实现可以依托现有的IPv4网络进行,其典型代表是IETF 的“ 6 bone Project。后者直接在数据链路层之上实现IPv6协议及其上层协 议,代表全新的一代产品,国际上有代表的大型系统包括欧美合作的MoonV6,我国八部委宣布在2005年联合建设我国的基于IPv6的试验网也属于这类新一 代的网络。因此,对IPv
32、6路由器的测试也基于上述两种模式进行,即基于 IPv4 平台的包装测试(Encapsulation Test和直接在IPv6平台上进行测试。迄今为止对IP路由器测试大都采用ISO 9646规定的两种抽象测试法,即回 绕测试法(LTM - Loop-back Test Method)和穿越测试法(TTM - Transverse Test Method)。后者是由我国学者在英国工作期间提出来, 经英国ISO对口工作组 建议,被ISO接纳为测试网络中继系统的标准测试法之一 。从80年代中期开始我国也逐步开始涉足网络协议测试技术的研究以及测试 系统的开发,过去大量的工作是针对端系统(End-Syst
33、em)进行的。国内对路由器的测试工作近年才进行,包括清华大学、中科大IPv6小组9、北京邮电大学的IPv6研究小组10、中山大学IPv6学生实验网11、兰州大学IPv6实验床 12等,多数采用基于IPv4的“包装”测试。1.2 IPv6路由器并发多端口测试系统1.2.1传统路由器测试技术与系统的局限性如图1-1所示,ISO 9646建议的回绕测试方法(LTM )进行测试时,测 试器将测试数据的目的地址填为测试器的地址,被测路由器收到该数据时,查 询路径表后会将该测试数据返回到测试器,因此,这种测试方法称为回绕测试 法。LTM实现简单,但一次只能测试到单个端口的相关协议实现,因此测试能 力不强。
34、曾华燊教授在对LTM进行深入研究后提出的穿越测试法(TTM )能够同 时对一对端口进行测试,如图1-2。该测试法要求两个测试器各自观察一个路由 器端口,因此从测试器1发出的测试控制数据经被测路由器转发到另一端口, 再到达测试器2。实际上,在In ternet环境中,只要将两个测试器置于同一测试 系统之中,两个测试器分别使用不同的IP地址,便很容易实现对一对IP路由器端口的严格控制下的测试,也容易实现测试器1和2之间的协调。由于在同一测试过程中涉及被测路由器的两个端口,因而能够测试模拟路由器一对端口工作状态和外部行为的情况。由于该方法的测试路径穿过了路由器,因此被称 为“穿越测试法”。考虑到路由
35、器的端口数通常大于 2,采用TTM仅能够对一对端口进行受控 测试;而采用多个双端口测试器对路由器分别进行测试,现有的测试技术中尚 缺少:多个测试器间的协调与同步机制。路由器实质上是包括应用层协议在内 的信令控制平面和管理平面的协议集,单对端口测试技术不能反映不同端口之 间在三个平台上协议活动的相互影响。现有的测试控制数据描述语言TTCN-3不具备描述测试并行性,特别是 并发特征的能力。正因为如此,目前的测试难以模拟多端口路由器的外部实际工作环境、夕卜 部网络信息流的分布和最低性能指标,因而测试功能不全面。被测路由器测试器1 测试器2中继/测试器1测试器2被测路由器说明:测试器1和测试器2在物理
36、 上可以设计在一个系统之中。图1-1回绕测试法示意图图1-2穿越测试法示意图1.2.2并发多端口测试技术与测试系统四川省网络通信技术重点实验室为了解决以上问题,着手研究多端口路由器的并发测试技术。实验室首先提出了多端口同步并行穿越测试法(MSP-TTM-Multi-port Synchronized Parallel -Transverse Test Method并定义了并发多端口 测试定义语言(CMP-TDL - Concurrent Multi-Port Test Definition Language) 13-15。 MSP-TTM要求测试系统能够在严格的控制下,对多个双端口测试器(TP
37、T -Two-Port Tester)进行协调和同步,实现对多个端口对的并行测试。由于相关的 测试系统具有完整的并行测试和并发测试的同步与协调机制,因而能够实现对 路由器的多个端口的输入数据的并发特征的模拟和各类数据到达率的模拟,从而使多端口并发测试系统能够完整地模拟多端口路由器的实际工作的外部环 境。鉴于TTCN-3不能描述并行测试之间的同步协调和控制的机制,因此需要 一种新的测试控制数据定义语言,我们称之为并发多端口测试定义语言 CMP-TDL。CMP-TDL的核心功能是描述端口对的并行测试进程间的任务指派、 协调和同步,相关的单对端口的测试控制数据将借用增强后的 TTCN-3来描述Coo
38、rdination commands & responsesml三:e : :cmpTM 團席i諭时际窗翻画翕蟲iCoordination commands & responsesMultiple test-threadC- CompilerUTTCN-3 CompilerMATS in :Two-P Testeort r iTw( Teb-Port ster kTwo-POrt Tester 1Two-Port Tester nTest Data &Test Data &responsesresponsesRouter Under Test (RUT)Test Data & J respon
39、sesTest Data & responsesTestCMPTSTools;:;TTCN-3 一:CMPTDLCompilerATS inI I -I 9 I:CMPTDL图1-3 CMPTE系统结构与测试例支撑工具借助于MSP-TTM测试方法和CMP-TDL语言,目前实验室正在开发多端口 IP 路由器的并发测试系统(CMPTS - Concurrent Multi-Port Test System 14。CMPTS具有如图1-3左边所示的两级结构,上级为并发多端口测试管理器(CMPTM Concurrent Multi-Port Test Manage)处理并行测试同步与协调问题; 下级多
40、个TPT分别处理一对端口的测试问题。TPT既可以在CMPTM控制下对 指定的端口对进行测试,也可以独立地作为便携式双端口测试器。CMPTM与TPT之间通过局域网进行通信。并发多端口测试系统由于能够模拟多端口路由器的实际运行环境,因而可 克服单对端口测试系统不能全面测试和评价多端口路由器的缺点。经过查新, 至今尚未见国内、外有类似的研究工作报道。1.2.3测试控制管理器与测试支撑工具如图1-3所示,并发多端口测试环境 (CMPTE -Concurrent Multi-Port TestEnvironment)由 CMPTS 和测试支撑工具(Test Support Tools两部分组成。CMPT
41、S 是测试过程控制器,由CMPTM控制可执行测试控制数据(MTET - MultipleTest-thread Executable Test )的多线程运行来实现并行测试过程的同步与协调。 MTET是用CMP-TDL语言描述的测试控制数据中与并行测试相关的部分经过 编译后形成的可执行程序。测试支撑工具的任务是将用某种语言描述的抽象测试数据(Abstract Tests)转变为可执行的测试数据(Executable Tests)。在CMPTE中,测试支撑工具包 括 CMP-TDL、TTCN-3、CMP-TDL编译程序和 TTCN-3/C 编译程序。其中 CMP-TDL编译的结果包括与并行测试相
42、关部分的 C代码和TTCN-3测试数据两 部分,本文不涉及 CMP-TDL编译程序,笔者的工作是关于 TTCN-3/C编译程 序的设计与实现。TTCN-3(Test and Test Control Notation version 3) 16是 TTCN (Tree and Table Combined Notation) 17的第三版。TTCN是ISO定义的“树表结合的标记语言”, 它是用树表结构来描述测试集和测试例的半形式化语言。与其它高级程序设计语言类似,用 TTCN-3描述的抽象测试数据不能直接 用于实际测试,需要将其转换成可执行的测试数据。这一转换过程通常可由两 类程序来完成:TT
43、CN-3编译器(Compiler)和TTCN-3解释器(Interpreter)。目前 已有的测试系统中采用解释方式的较多,即“边解释边执行”的测试方式。解 释方式的优点是:因为每次测试都要重新扫描和解释用TTCN-3描述的测试控制数据,因此修改和调试测试控制数据较为方便。但也正因为如此,联机处理 时花在解释上的时间较多,不利于提高测试效率,也不适合实时性要求较高的 测试场合。笔者及其同事在分析了现代高速路由器的测试需要的基础上,在存储空间 的占用量和“可执行代码”修改的方便性,与测试实时性要求的矛盾中,选择 了“缩短联机处理时间”优先的策略,采用对 TTCN-3描述的测试控制数据进 行编译的
44、技术路线。1.3本论文反映的研究与开发工作及主要特点以多端口路由器的并发测试技术的研究为背景,本论文所反映的工作是笔 者参与并初步完成的TTCN-3/C语言的编译程序。在完成本论文相关的研究与 开发工作中,笔者的工作涉及以下几个方面:1)研究TTCN-3核心语言,掌握其语法和语义规则。这是实现TTCN-3编 译程序的必备基础。2)研究编译原理和技术,结合TTCN-3的特点,与王文娟同学一道完成了 TTCN-3/C编译程序的总体设计。3)研究词法分析技术,与王文娟同学一起,利用LEX工具实现了词法分析器。4)研究语法分析技术,以王文娟同学为主,利用YACC工具共同实现了语 法分析器。5)重点研究
45、目标代码生成技术,设计并实现了 TTCN-3语法规则的一个子 集的编译。本论文研究工作的主要特点在于:1)在国内外对 TTCN/TTCN-3 描述的抽象测试集(ATS - Abstract Test Suite)大多采用解释方式执行的情况下,本论文探索性地采用编译方式来执行, 更加适应对高速路由设备进行测试,特别是并发和性能测试的需要。2)采用两步编译的方式,将 TTCN-3描述的ATS编译成C代码,以便与测试系统的其它部分代码联合编译,最终生成可执行测试集ETS。3)在国内首次探索关于TTCN-3语言的编译技术。尽管国外已有了 TTCN-3/C18和TTCN-3/Java19编译器的研究与开
46、发,但国 内除中科院成都计算机应用研究所在 20世纪80年代末期,进行过第一版TTCN 的编译程序的开发工作20外,至今尚无人开发过TTCN-3的编译程序。TTCN-3 在第一版TTCN的基础上增加了许多新的功能和特点21,因此该编译器的设计 与开发仍有较大的价值。1.4论文组织结构本论文的后续章节主要反映笔者所涉及的研究工作,其组织结构如下:第2章在简要地介绍了 TTCN-3语言及其发展和相关编译技术现状之后, 介绍了笔者参与的TTCN-3/C编译程序的总体设计方案,确立了两遍扫描的编 译结构。第3章讨论TTCN-3/C编译程序的词法、语法和语义分析技术,以及 相关程序的设计。该章的重点是用
47、LEX构造词法分析器,以及用YACC构造语 法分析器的方法;对解决语法冲突、构造语法树和维护符号表等问题也作了相 应的讨论。第4章详细讨论了代码生成的设计,重点在于其基本思路和各类语 法结构的实现。第5章简要地讨论了对编译程序的调试方法和调试实践。最后, 第6章在对论文工作进行总结的基础上,对后续研究工作进行了分析和展望。第2章TTCN-3/C编译程序总体设计2.1 TTCN-3的发展及特点TTCN17是一种通过树表结构来描述测试集和测试例的半形式化语言,其最早于1992年被列入ISO/IEC 9646-3和CCITT Rec.X.292标准文本中。TTCN以 其友好的表格形式、判决系统和一致
48、性匹配机制逐渐成为了协议一致性测试的 规范语言,并广泛应用于各大标准化组织和工业领域。由于第一版的TTCN不能描述测试系统内部、被测系统内部以及他们之间的并发行为,1998年ISO/IEC 和ITU-T发布了第二版TTCN(TTCN-2)22,它在前一版本的基础上提出了并 发机制和许多新的概念,实现了模块的重用和封装,同时还以一种简单的声明 实现了 ASN.1 (Abstract Syntax Notation 1)23,24的解码。由于 TTCN-2 仍然是基于 OSI ( Open Systems Interconnectior)一致性测试 设计开发,因而不能应用于其它类型的测试,如互操作
49、性测试、健壮性测试、 回归测试、系统测试和集成测试等,和更广泛的技术领域。ETSI于2000年10月发布的第三代TTCN标准(TTCN-3) 16是一种更灵活,功能更强大的测试描 述语言,同时将之列入了 ITU-T Z.140系列。最初的TTCN-3标准分3个部分:核心语言(Core Language)16、类似于 TTCN 的表格表示形式(Tabular Presentation Format,TFT25、基于 MSC(Message SequenceChart)的图形化表示形式(Graphical Presentation Format,GFT) 26。 2003年3月16 日,ETSI发
50、布的TTCN-3修订版不仅对原有三部分进行了改进 和提高,还提出三个新的部分:TTCN-3的操作语法27、运行接口( TTCN-3Run time In terface,TRI)28和控制接口( TTCN-3 Control In terface ,TCI) 29。TTCN-3使用灵活、功能强大,能通过各种通信接口应用于不同的测试系统, 它在TTCN-2的基础上增加了许多新的功能21,比如:不同的表示形式。动态并发的测试配置。同步和异步通信操作。信息编码和其它属性的描述。数据和签名模板具有功能强大的匹配机制。类型和值的参数化。测试判决的制定和处理。测试集的参数化和测试例的选择机制。TTCN-3
51、与ASN.1以及其它语言(如IDL30、UML 31)的联合使用2.2国内外相关编译技术研究现状早在80年代,在TTCN标准刚制定后不久,国内外就有一些研究机构对 TTCN支撑工具进行研究。一些研究机构把用TTCN描述的测试集转换为各自的测试描述语言的形式,再转换为可执行测试集。比如英国国家物理实验室将 TTCN转换为测试描述语言TDL32,加拿大IDICOM公司将TTCN转换为其专 用测试语言ITL 0 TDL通过编译而ITL则采用解释的形式来执行测试集。而另 外一些研究机构则直接将TTCN描述的测试集进行解释或编译。比如国际上有 的研究机构曾对TTCN的直接解释执行做了尝试33,34;国内
52、对TTCN的支撑工 具开发得比较成功和完善的是中科院成都计算机应用研究所在开发OSI第4类传送层协议测试系统时所开发的 TTCN编译器20 o近些年,随着TTCN-3的普及和IPv6测试系统的出现,一些研究机构正在 研究开发TTCN-3支撑工具。例如18公司开发出的TTthree系列 工具,实现了对TTCN 3到C语言的编译以及TTCN-3至到 JAVA语言的编译; 35公司开发的 OpenTTCN测试仪工具中的 TTCN 3编译 器;国内的TTCN-3支撑工具的开发多为TTCN-3解释器33。2.3 TTCN-3/C编译程序的总体设计2.3.1 TTCN-3编译阶段划分TTCN-3描述的测试
53、控制数据(测试例/组/集)到可执行测试数据的编译过 程,一般分为两个步骤。第一个步骤是将 TTCN-3描述的测试控制数据编译成 某种程序设计语言的表达形式,第二步再利用该程序设计语言的编译程序编译 成可执行测试数据。这样做具有多方面的优点。首先,它可以利用现有的程序 设计语言的编译程序实现向机器代码的转换功能,因而不必与机器代码打交道, 将研究的重点放在TTCN-3和高级语言的转换上。其次,它容易实现将编译的 中间结果,即某种程序设计语言表达的代码,与用同种程序设计语言开发的测试系统其它部件的实现代码进行联合编译,得到完整的可执行测试程序。最后, 由于大众化的程序设计语言都具有较好的可移植性,
54、因此TTCN-3编译程序和编译中间代码都便于在多种平台之间移植。本编译器采用的就是这种设计思路,即设计为TTCN-3到C语言的编译器。 TTCN-3测试例经过编译生成完整的 C程序文件,再用通用的C编译器及相关 链接、装载工具,生成最终可执行的程序。232 TTCN-3/C编译程序设计范围的界定TTCN-3是一个相当复杂的测试控制描述语言,其中许多功能在测试实践中 可以不用或难于理解。从IPv6路由器测试的需要和开发周期上的考虑,我们界 定第一版的TTCN-3/C编译程序只支持TTCN-3功能的一个子集。由于我们选 择了 C语言作为中间语言,因此,在满足测试需要的前提下,尽量选择了 TTCN-
55、3 中其语法和语义较容易在C中找到对应关系的语法结构,特别是那些容易实现 直接转换或者通过构造C语言的类(Class)结构来实现的语法结构。对于错误处理,在词法和语法分析阶段,我们简单地报告出错地点,然后 停止编译。而在语义分析阶段,我们报告出错地点和具体的错误类型,但并不 停止编译。2.3.3 TTCN-3/C编译程序的阶段编译器36-38是将一种语言翻译为另一种语言的计算机程序。编译器以某种 语言(Source Language )编写的程序作为输入(源程序),经过处理生成与源 程序等价的用目标语言(Target Language表达的程序。编译程序的工作一般可以分为五个主要阶段:词法分析
56、、语法分析、语义 分析、中间代码产生、目标代码生成36。TTCN-3/C编译程序的设计可以参照这 五个阶段划分相关的功能模块。编译程序中一般还应包括“表格管理”和“出 错处理”两部分内容。在编译程序中最重要的表格是符号表,它记录源程序中 定义的所有名字以及其各种属性36。根据需要,编译程序还可能包括对生成的 代码进行优化的过程。不过考虑到在本设计中功能尽可能简化,加上后续的C编译器大多具有代码优化的功能,所以目前的TTCN-3/C编译器中未考虑代码优化的问题。图2-1为典型编译程序的编译阶段和功能划分示意图36。源程序目标程序图2-1典型编译器程序阶段和功能划分234编译过程的“遍数”上一节讨
57、论的编译程序的五个阶段,是按逻辑功能进行划分的。具体实现 时,考虑到源语言的差异、设计要求以及实际处理的方便性和合理性等因素, 往往很难一次完成全部的编译工作,而需要从头到尾对源程序或源程序的中间 结果进行多次扫描,每一次扫描仅完成部分加工处理,并生成中间结果或目标 程序。扫描一次在编译术语中称为一 “遍”(PASS)36。编译器扫描遍数的确定主要是在时间和空间效率上进行权衡37,此外也涉及算法复杂度的问题,因 此在一遍扫描过程中,可能会处理图 2-1中的多个阶段功能。如果只采用一遍扫描,编译程序在设计和实现上难度太大,生成的编译器 难以维护;多遍扫描对路由器的测试效率影响较大;而两遍扫描,由
58、于前后两 遍的设计相对独立而本编译器由两个小组成员分别完成,可以较明确地进行小 组分工与合作,因此本编译器采用了两遍扫描处理的方式。如图2-2所示,第一遍扫描读入TTCN-3源程序,并对其进行词法分析、语法分析和语义分析, 其输出为语法树和符号表。第二遍扫描的输入是第一遍生成的语法树,通过对 语法树的遍历,结合符号表登记的信息来生成C代码。笔者的研究重点是第二遍扫描,即C代码生成方面的工作。图2-2 TTCN-3/C编译器的遍第3章词法、语法与语义分析3.1词法分析3.1.1词法分析简介词法分析是编译过程的第一个阶段。这个阶段的主要任务是从左到右逐个字符地读入TTCN-3源程序,产生单词符号序
59、列,以提交给语法分析使用38。词法分析还可以完成一些相关的辅助任务37,个是滤掉源程序中的注释、空 格、制表符和换行符等不影响程序执行的代码,另一个是使编译器能将发现的 错误信息与源程序的出错位置联系起来。编译技术发展到现在,词法分析已经非常成熟,并有了很多通用的工具, 因为词法分析通常与编译程序的源语言和目标语言无关。词法分析的基础是源 语言的词法规则,一般用正则表达式36来表示。3.1.2用LEX构造词法分析器最具代表性的词法分析器生成工具是LEX39-42系列,本编译器采用其中的FLEX42版本。如图3-1所示,LEX的输入为LEX语言的程序,它包含对源语 言词法构成的正规式描述,词法分
60、析器对词法结构识别匹配后的即时处理动作, 以及其它辅助过程三大部分。经过LEX工具的编译,将该LEX语言的程序转换为一个C宿主语言的程序yylex。将yylex加入到我们的编译器中,就是我们 的词法分析器。FLEX的通用性、可靠性和以 C为宿主语言等特点是我们选择 的主要原因。LEX源程序输入串图3-1 LEX在编译系统中的作用LEX源程序的格式如下38:说明部分%转换规则%辅助过程在本编译器中,LEX的输入文件为TTCN.L。在TTCN.L的说明部分定义 了 29个正规式,它们决定了 TTCN-3的词法构成,并区分了换行符和其它的空 白字符;转换规则部分定义了单词识别的即时处理,通常是返回一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业底商空间规划与动线优化方案
- 零售行业的店长岗位的招聘问答参考
- 护理与医疗团队的协作模式
- 水利工程旁站监理方案
- 新时代基础英语 2
- 基于健康素养的儿童体育运动类校外培训机构策略分析
- 客户服务团队激励策略研究
- 零售业门店经理招聘面试技巧与问题
- 炼铁厂的自动化与智能化升级路径
- 零售业内如何做好一名行政助理解析
- 洗煤厂工程施工组织设计方案
- 抵押物品的借款合同模板
- 体育组织信访管理工作流程与制度
- 价值型销售(技能篇)
- 挡土墙新建及土地回填平整投标方案(技术方案)
- T-CECS120-2021套接紧定式钢导管施工及验收规程
- JGJ+196-2010建筑施工塔式起重机安装、使用、拆卸安全技术规程
- 《创新创业基础》课件-模块四 创新成果保护与转化
- 燃料检修潜在风险与预控措施
- 中学生防震减灾知识
- 劳务合同模板电子下载
评论
0/150
提交评论