新闻中心

EEPW首页>嵌入式系统>设计应用> 基于逆波兰记号电信计费话单过滤算法设计

基于逆波兰记号电信计费话单过滤算法设计

作者: 时间:2011-08-18 来源:网络 收藏

  3.3条件语义的定义

  语义定义是和功能需求紧密联系的,并可以根据需求的变化进行调整和扩充。文法G中各终结符号语义见表1。

QQ截图未命名1.jpg

  例如话单表达式(((A>4224000)∩(A≤6899123))∪(N=1)),其语义为主叫号码段在4224000和6899123之间,或者主被叫归属相同区。

  3.4条件形式定义和物理存储的相互转换

  话单过滤条件的形式定义和物理表述分别采用中缀法和后缀法,前者直接面向最终用户,后者是针对人员实现的需要,因此必须采用合理的机制进行相互转换。这里需要解决两个问题:一是要一个最终用户可理解的图形界面向导、采用中缀法来配置过滤表达式;二是一个依据中缀式形成后缀式的。在本文中作如下定义:

  3.4.1 过滤表达式的用户配置

  这里预定义关系表T_EXPRESS,其结构见表2。该表用于存储所有话单过滤条件的原子表达式和组合表达式。该表,设计相关的图形配置界面向导是很容易达到用户配置过滤表达式要求的。

QQ截图未命名1.jpg

  3.3节中话单过滤表达式在表中存储方式见表3,记录序号5指示的组合表达式就是该过滤条件表达式的入口。

QQ截图未命名1.jpg

  3.4.2 中缀式向后缀式转换

  实现中缀表达式向后缀表达式的转换可采用递归算法,伪C语言代码如下:

  String GetSuffixExpress(int seq) {

  Billing_Record_Express=GetBillingRecordExpress(seq);

  If Billing_Record_Express.ftype=原子表达式

  Return Billing_Record_Express.felement + ″,″+

  Billing_Record_Express.fvalue +″,″+ Billing_Record_Express.foperate;

  Else //组合表达式

  Return GetSuffixExpress(int(Billing_Record_

  Express.felement)) + ″,″+ GetSuffixExpress(int

  (Billing_Record_Express.fvalue)) + ″,″+

  Billing_Record_Express.foperate;

  }



评论


相关推荐

技术专区

关闭