当前位置: 首页 > news >正文

做ppt兼职的网站厦门的网站建设公司

做ppt兼职的网站,厦门的网站建设公司,公司logo注册,wordpress first post近期在做一个项目#xff0c;涉及到一些简单的规则匹配。规则的判定条件可以用关系表达式描述#xff0c;形如(P1|P2)(P3|P4)。其中是与#xff0c;|是或#xff0c;P1-P4是Pattern#xff0c;具体的匹配条件#xff0c;返回值是True或者False。为计算此表达式…近期在做一个项目涉及到一些简单的规则匹配。规则的判定条件可以用关系表达式描述形如(P1|P2)(P3|P4)。其中是与|是或P1-P4是Pattern具体的匹配条件返回值是True或者False。为计算此表达式的值采用中序转后序再计算表达式的值。 1. 后序表达式的生成 中序表达式转后序表达式算法 1. 用|()对原表达式进行拆分得到ListString。2. 从前往后遍历该List    1如果是一个pattern则入栈。    2如果是左括号(也入栈。    3如果是右括号        a如果此时栈为空则表示表达式解析异常报警并退出。        b如果栈不为空则依次pop栈顶元素直到匹配到左括号(。如果没有左括号(的匹配则表达式依次报警并退出。    4如果是和|        a如果栈为空直接入栈。        b如果栈不为空依次出栈直到匹配左括号左括号不出栈。再把操作符入栈。3、所有的pattern和操作符都入栈以后把栈中所有元素依次出栈就得到后序表达式。参考代码 ListString postfix new ArrayListString(); StackString stack new StackString(); String delims |(); // 支持的操作符 StringTokenizer st new StringTokenizer(rule, delims, true); while (st.hasMoreTokens()) {String tk st.nextToken();if (!delims.contains(tk)) {// pattern直接入栈postfix.add(tk);} else if (tk.equals(()) {// 左括号入栈stack.push(tk);} else if (tk.equals())) {if (stack.empty()) {// 碰到右括号如果栈为空解析异常throw new RuleException(parseRule Error!);}String val stack.pop();// 如果栈不为空依次出栈直到匹配左括号while (!val.equals(()) {postfix.add(val);if (!stack.empty()) {val stack.pop();} elsebreak;}if (stack.empty() !val.equals(()) {// 如果匹配不到左括号解析异常throw new RuleException(parseRule Error!);}} else if (tk.equals() || tk.equals(|)) {if (stack.empty()) {// 碰到操作符如果栈空则直接入栈stack.push(tk);} else {// 如果栈不为空依次出栈直到匹配左括号while (!stack.empty() !stack.lastElement().equals(()) {postfix.add(stack.pop());}// 操作符入栈stack.push(tk);}} }// 所有的pattern和操作符匹配完毕把堆栈中还有的数据依次出栈 while (!stack.empty()) {postfix.add(stack.pop()); }System.out.println(Original Rule rule); System.out.println(Postfix Rule: postfix.toString());   2. 后序表达式的计算 后序表达式的计算算法 1. 从前往后遍历中序表达式    1如果是|操作符则pop两个字段r1和r2计算r1r2或r1|r2的值r3并将r3入栈。    2如果是pattern则计算pattern的匹配结果True Or False并将结果入栈。2、中序表达式便利完毕栈中只有1个元素即为表达式结果。 参考代码 StackBoolean stack new StackBoolean(); for (String str : this.postfix) {if (str.equals()) {// pop两个pattern计算boolean r1 stack.pop();boolean r2 stack.pop();stack.push(r1 r2);} else if (str.equals(|)) {// pop两个pattern计算boolean r1 stack.pop();boolean r2 stack.pop();stack.push(r1 || r2);} else {// 计算pattern的值并push到stackPattern ptn this.patterns.get(str);stack.push(ptn.judge(fact));} }if (stack.size() 1) {return stack.pop(); } else {throw new RuleException(judge failed: postfix error!); }  转载于:https://www.cnblogs.com/simplestupid/p/4771892.html
http://wiki.neutronadmin.com/news/216525/

相关文章:

  • 长沙 建网站wordpress用什么编辑器好
  • 网站平台建设步骤四川建设机械网站首页
  • 静态网站源码下载辽宁省建设工程造价管理网站
  • 建设银行北京东四支行网站广州营销型网站建设
  • 伯爵手表网站wordpress cascade
  • 企业网站需要什么功能私人可以做org后缀网站吗
  • 深圳网站建设深圳视频医疗平台网站开发
  • 个人网站的设计论文网站做排名有用吗
  • 网站备案号怎么添加网站排名 算法
  • 极品wordpress素材教程网站备案网站转入阿里云
  • 网站没有做实名认证衡阳做网站ss0734
  • 域名证书查询网站wordpress in排序
  • 罗湖网站的建设专业的网站建设公司哪家好
  • 承包工程在哪个网站兰州家易选网络科技有限公司
  • 上海医疗网站建设个人注册公司需要什么手续
  • 做垂直行业网站利润分析wordpress调用文章的tags
  • 网站规划建设与管理维护教程与实训wordpress ecommerce
  • 沈阳网站建设 南塔院感质控中心网站建设 申请
  • 华为做网站做一个主题的网页代码
  • 南京手机网站设计本地wordpress预览
  • 怎样做网站怎要加服务器免费网站新域名
  • 网站项目开发流程自媒体135官网
  • 中英双语营销型网站辽宁建设工程信息网新平台
  • 从化市营销型网站建设成都比较好的设计公司
  • 网站手机端做app足球比赛直播平台
  • 棋牌网站开发工程师深圳品牌营销推广
  • 广州设计网站培训班建站工具 开源
  • 工信部备案查询网站南宁高端网站建设
  • 北京建设银行招聘网站公司网站如何做
  • 深圳 建设银行国际互联网站国外seo