新闻中心

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

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

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

  3.5 话单表达式运算的实现

  话单表达式最终将形成布尔值结果真或假,由此来判定该张话单是否被系统分为语法分析、业务逻辑处理两个部分。语法分析是利用堆栈运算分解出原子表达式的过程;业务逻辑处理是针对原子表达式的语义作出相应的业务处理并求得该原子表达式的布尔值。以下是的伪C语言代码:

  STACK stack;

  Bool result;

  String suffixexpress;

  Bool SyntaxAnlysis(suffixexpress){

  SETNULL(stack);

  Terminalsymb=GetNextTerminalsymb(suffixexpress);

  While (!IsNull(Terminalsymb)) {

  Switch(Terminalsymb){

  Case A to N PUSH(stack,Terminalsymbol);

  Case > to =

  POP(stack,value);

  POP(stack,factor_code);

  Comparesymb=Terminalsymb;

  Result=LogicProcess(factor_code,Com

  paresymbol,value);

  PUSH(stack,result)

  Case ∪,∩

  POP(stack,result1);

  POP(stack,result2);

  Logicalsymb=Terminalsymb;

  Result=BoolProcess(result1,Logicalsymbol,result2);

  PUSH(stack,result);

  }

  Terminalsymbol=GetNextTerminalsymbol(suffixexpress);

  }

  return TOP(stack);

  }

  在和开发湖南本地网系统过程中,运用逆和堆栈技术,ANSI C/C++开发环境成功完成了预处理的话单过滤系统。本算法稍加修改和扩充就可以应用到大部分涉及格式化文本和数据库记录过滤的应用中。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭