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

自己做游戏app的网站吗外包公司做网站价格

自己做游戏app的网站吗,外包公司做网站价格,腾讯云一键wordpress,产品网近期在做一个项目#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://www.zqtcl.cn/news/547949/

相关文章:

  • 中国最好的建设网站哪些网站教你做系统
  • 自己做网站别人怎么看见网站建设办公
  • 凡科做网站视频网站哪家好
  • 查询网站是否正规营销策略国内外文献综述
  • 做网页用的网站wordpress用户角色权限管理
  • 怎么查网站备案的公司wordpress 无刷新评论
  • 学前心理学课程建设网站百度极速版下载
  • 佛山做营销型网站建设深圳宝安区租房
  • 做汽车团购的网站建设营销方案有哪些
  • 做设计的网站网络公关什么意思
  • 一般课程网站要怎么做做钓鱼网站软件下载
  • 济南网站建设92jzh收不到wordpress的邮件
  • 一键优化在哪里打开新手怎么入行seo
  • 网站建设的费用明细创建公司网站需要注意什么
  • 微网站怎么做的好宣传片拍摄服务
  • 抚州网站开发机构wordpress开源
  • 企业营销网站建设不属于网页制作工具
  • 呼和浩特网站建设信息建服装类网站需要考虑的因素
  • 百度站长平台工具南京开发app的公司
  • 济南如何挑选网站建设公司设计 网站 现状
  • 网站开发建设流程图wordpress 插件 简码
  • 信宜网站开发公司阿里指数app下载
  • AAP网站开发需要多少钱网站核验通知书
  • 网站续费模板wordpress安装到ESC
  • 网站网址大全做商品条形码的网站
  • php购物网站开发成品各大网站收录提交入口
  • 怎么办个人网站网络管理系统中故障管理的目标是
  • 想做网站的客户在哪找下载网站系统源码
  • 网站建设是固定资产还是列费用soho做网站
  • 学校建设评建工作网站应用中心软件