缔冠期刊网

基于C++语言的TTCN—3测试平台中字符模式匹配实现方法

2022-06-09

  摘要:TTCN-3是一个由ETSI维护的全球适用的标准测试语言。在TTCN-3测试平台设计与实现中,字符模式匹配机制是一个重要组成部分。提出一种采用面向对象的程序设计语言C++来实现TTCN-3测试平台中字符模式匹配方法,并给出了实例验证。 

  关键词:C++;TTCN-3;正则表达式;字符模式匹配 

  中图分类号:TP306 

  文献标识码:A 文章编号:1672-7800(2015)003-0030-02 

  0 引言 

  TTCN-3(Testing and Test Control Notation Version 3)是目前流行的一种测试语言。在TTCN-3测试平台设计与实现过程中,模板匹配机制是需要实现的一个重要部分,包括指定值匹配、缺省值匹配、值列表匹配、补值列表匹配、任意值匹配、任意值或空匹配、值范围匹配、超集匹配、子集匹配、任意元素匹配、任意元素或空匹配、排列匹配、字符模式匹配共计13种匹配机制[1],其中一个重要匹配机制为字符模式匹配,它可以用于定义一个接收模板需求的字符串格式并允许一些元字符的使用,例如,在一个字符模式中,“?”和“*”分别意味着匹配任一字符和匹配任意数目的任一字符。字符模式匹配机制与正则表达式有许多相似之处,本文采用面向对象的程序设计语言C++中的“准”标准库boost库中的正则表达式库regex来实现TTCN-3模板的字符模式匹配机制。boost库是一个开源并且完全免费的C++程序库,而boost::regex是目前C++语言对于正则表达式支持较好的程序库。 

  1 问题分析 

  TTCN-3中可以定义的模板包括用于发送的模板和用于接收的模板,而字符模式匹配机制可以用于在接收模板中定义一个需要接收字符串的格式,关键字是“pattern”。需要注意的是,字符模式匹配机制只能用于匹配TTCN-3中的charstring和univeral charstring数据值[1-2]。举例如下: 

  template charstring MyTemplate :=pattern “a*bc” 

  该模板可以匹配任意以字母“a”开头,接着可以是任意数目(可以是0个)任一字符,之后是以字母“bc”结尾的字符串。其中“*”称为字符模式的元字符,TTCN-3字符模式中的元字符指那些在字符模式中具有特殊意义的专用字符。元字符本身是一个个单一字符,但是不同或者相同的元字符组合起来可以构成大的元字符。 

  正则表达式(Regular Expression通常缩写成“regex”)指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串,因而具有比单个或多个字符串更强大的描述能力。通俗地讲就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合该特征[3-4]。正则表达式对于解决相当数量的模式匹配问题至关重要,许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式引擎则是一种可以处理正则表达式的软件,引擎通常是更大的应用程序的一部分。C++程序设计语言中支持正则表达式的准标准库boost::regex,头文件是,boost::regex支持的默认正则表达式语法是perl语法。 

  从以上分析可以看到,实际上,TTCN-3中的字符模式也即是TTCN-3所支持的正则表达式,但是由于TTCN-3字符模式的语法规则和C++所支持的perl语法正则表达式有所不同,两者并不兼容,因而在TTCN-3测试平台实现中,需要将符合TTCN-3语法规则的字符模式翻译成符合perl语法的面向对象程序设计语言C++所支持的正则表达式。以charstring类型为例,对TTCN-3测试平台开发过程中定义与实现字符模式匹配的过程加以说明:首先定义charstring类型的模板,实例化为对应的数据值,设定相应的字符模式匹配标识,为相应数据值模板对象赋值(无论是否带有具有特殊意义的元字符均视为普通字符串类型),最终返回带有字符模板匹配机制的charstring数据值模板对象实例;在接收操作中,需要将系统接收到的charstring数据值与带有字符模式匹配机制的模板进行匹配,实现匹配操作时,首先应该将带有字符模式匹配机制的模式串转换为符合Perl语法的正则表达式,之后才可以使用匹配算法regex_match进行匹配操作,并返回匹配结果(true 或是false),系统根据匹配结果进行下一步测试操作,如图1所示。以上过程实际上涉及了TTCN-3测试平台中TE实体内部的3个交互实体:ETS、TTCN-3运行时系统(T3RTS)和一个可选的内部编解码系统(EDS)实体。为了突出本文内容,这里隐去这一部分,TTCN-3数据类型、数据值及模板表示见参考文献[5],不再赘述。 

  2 实现方法 

  从以上分析可以看到,匹配操作中的关键一步就是实现模板字符串从TTCN-3字符模式匹配机制到符合Perl语法的正则表达式的转换,两者区别主要在于某些带有特殊意义的元字符有所不同。TTCN-3字符模式匹配机制与Perl语法的正则表达式中不同元字符的对比如表1所示。 

  从表1可以看出,两者元字符的含义确实不同。本文采用的转换思想如下:①构造含有需替换TTCN-3字符模式元字符的正则表达式reg;②使用boost::regex_replace方法进行字符串的查找与替换,以及格式转换,如果字符模式中含有“?”、“*”、“*#n”、“#(n,m)”,则替换为符合Perl语法的正则表达式的字符,否则不作任何修改;③使用boost::regex_match方法进行正则表达式的匹配操作,返回值为True或是False。 

论文中心更多

期刊百科
期刊投稿 期刊知识 期刊审稿 核心期刊目录 录用通知 期刊版面费 投稿期刊推荐 学术问答
基础教育
小学语文 中学语文 小学数学 中学数学 小学英语 中学英语 物理教学 化学教学 生物教学 政治教学 历史教学 地理教学 科学教学 音乐教学 美术教学 体育教学 信息技术 班主任管理 校长管理 幼教 教育管理 微课教学 作文教学 德育教学 教学设计
医学论文
内科医学 外科医学 预防医学 妇科医学 检测医学 眼科医学 临床医学 药学论文 口腔医学 中西医 中医学 外科 护理 基础医学 急救医学 老年医学 医学实验 儿科医学 神经医学 兽医学 肿瘤医学 综合医学
职业教育
教育学原理 电影文学教育 学前教育 教育学管理 高等教育学 教育技术学 职业技术教育 成人教育学 特殊教育学 教育心理学 家庭教育 教育毕业 中专中职教育 教学设计 国学教育 学术研究 大学教育
药学卫生
社区门诊 医药学 医患关系 医院管理 疾病预防 保健医学 公共卫生 医学教育
文科论文
农业经济 工商管理毕业 会计毕业 行政管理 法律毕业 市场营销 经济毕业 汉语言文学 财务管理 物流管理 人力资源 旅游管理 国际贸易 物业管理 新闻学 企业管理 金融银行 社会科学 食品安全 办公档案 审计学 税务税收学 外国文学 哲学
理科论文
机电毕业 土木工程 计算机毕业 电气毕业 建筑毕业 电子商务 工程毕业 设计毕业 机械制造 汽车毕业 园林毕业 农学毕业 数控毕业 软件技术 水利工程 环境生态 畜牧渔业 化工毕业 科技创新 石油矿藏
论文格式
开题报告 论文题目 摘要关键词 目录提纲 论文致谢 参考文献 附录其他 论文答辩
职业论文
教育论文 经济论文 科技论文 财会论文 管理论文 医学论文 法学论文 文学论文 工业论文 建筑论文 农业论文 水利论文 计算机论文 社科论文 机械论文 生态环境 中西文化

先发表后付款 不成功可退款

权威机构认证 专注期刊10余年 1000余家杂志社长期合作

缔冠期刊网

首页 网站地图 返回顶部
Copyright © 1998- 缔冠期刊网