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

中华人民共住房和城乡建设部网站推广文案怎么写

中华人民共住房和城乡建设部网站,推广文案怎么写,石家庄网站建站,销售网站背景 之前在做游戏的过程中,我们经常需要解析一些公式,比如(对方攻击值-对方防御值)*2这种表达式,我们习惯于用代码写死公式,但是这种方式不够灵活,我们想要的是一种灵活的解析方式, 只需要策划输入一个任…

背景

之前在做游戏的过程中,我们经常需要解析一些公式,比如(对方攻击值-对方防御值)*2这种表达式,我们习惯于用代码写死公式,但是这种方式不够灵活,我们想要的是一种灵活的解析方式,

只需要策划输入一个任意的一个表达式,我们就可以自动计算出来对应的数值,我们不需要理解策划的公式,那么问题就转化成了如何解析表达式公式呢?答案是使用antlr.

技术实现

antlr是一个解析器,包括两个部分:词法解析器和语法解析器,如下图所示:

在这里插入图片描述

antlr最大的优点是可以按照树的深度优先遍历访问所有的节点,比如下面的表达式:
(1) + 10 * 20 - 40/2 - (attack + defence)
如果我们使用简单的如下.g4文件来解析的话,

grammar Calc;prog: stat+;stat: expr                   # printExpr| ID '=' expr            # assign;expr: expr (MUL|DIV) expr # MulDiv| expr (ADD|SUB) expr # AddSub| INT                    # int| ID                     # id| '(' expr ')'           # parens;MUL : '*' ;DIV : '/' ;ADD : '+' ;SUB : '-' ;ID  : [a-zA-Z]+ ;INT : [0-9]+ ;WS  : [ \t\r\n]+ -> skip ;    // toss out whitespace

antlr可以解析成如下的解析树:
在这里插入图片描述

我们可以看出来如果我们编写一个Listener访问这棵树的话,我们可以得到完整的表达式,包括各个优先级都是正确的,当获取到这个按正确优先级排好序的指令后,我们可以通过简单的堆栈操作获取结果:

push(1)

push(10)

push(20)

pop(*)

pop(+)

push(40)

push(2)

pop(/)

pop(-)

push(attack)

push(defence)

pop(-)

pop(-)

注意这是一个深度优先遍历树的顺序,通过这个指令顺序,可以获取正确的表达式的值

总结

antlr提供了一种解析表达式的方便的方式,让我们可以解析任何用户或者策划提供的公式,它会按照深度优先树遍历的顺序返回数据和指令的顺序,方便我们计算最终的结果

http://www.ds6.com.cn/news/71051.html

相关文章:

  • 用wgert 做网站检测网络培训网站
  • 导师让做网站江门seo
  • 潍坊网站建设公司排名新浪体育世界杯
  • 杭州网站推广互联网营销策划
  • 东莞网站外包福建百度代理公司
  • 网站关键词多少个好北京百度快速排名
  • 深圳租赁住房和建设局网站北京网络seo经理
  • 企业做网站的作用搜索引擎广告
  • 国内网站欣赏定制网站开发公司
  • 网站 栏目做下拉营业推广策略有哪些
  • 直播做ppt的网站奉化云优化seo
  • nas有域名了怎么做网站企业宣传软文范例
  • 网站开发哪里好焊工培训内容
  • 网站做流量推广的方式网络推广有前途吗
  • 绿蜻蜓建设管理有限公司网站阿里指数查询官网入口
  • 两学一做知识竞赛网站自动点击器免费下载
  • 手机上做网站的软件移动建站模板
  • 建站工作室惠州seo关键字排名
  • 南通网站开发最好的推广平台是什么软件
  • 网页布局设计方法邯郸seo
  • 卡密网站怎么做各大网站收录入口
  • 平山县建设局网站网站建设公司是怎么找客户
  • wordpress 调用编辑器自媒体seo优化
  • 做木材生意的外贸网站百度收录提交入口地址
  • 网站模板下载好之后如何安装谷歌seo优化排名
  • 自己设计装修手机软件seo助力网站转化率提升
  • 免费网站建设教程视频济南seo全网营销
  • 怎么显示wordpress里元素的源代码seo博客是什么意思
  • 怎么做网站受众分析云南seo
  • 网站开发费用清单老王搜索引擎入口