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

台州网站建设团队域名注册平台哪个好

台州网站建设团队,域名注册平台哪个好,厦门网站建设xm37,做url网站目录 解释器模式(Interpreter Pattern) 解释器模式的核心角色: 优缺点 代码实现 解释器模式(Interpreter Pattern) 解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式&am…

目录

解释器模式(Interpreter Pattern)

解释器模式的核心角色:

优缺点

代码实现


解释器模式(Interpreter Pattern)

        解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。

解释器模式核心角色

  • 抽象表达式(Abstract Expression):定义了抽象的解释器接口,用来解释语言中的元素,可以是终止符,也可以是非终止符。
  • 终止符表达式(Terminal Expression):实现了抽象表达式中的解释器接口,用来存储语言中的终止符,它们不需要再次解释,通常会返回具体的结果。
  • 非终止符表达式(Nonterminal Expression):也实现了抽象表达式中的解释器接口,用来存储语言中的非终止符。
  • 上下文(Context):存储解释器解释的信息,并调用解释器进行解释。

优缺点

(1)优点:

  • 可扩展性比较好,灵活。
  • 增加了新的解释表达式的方式。
  • 易于实现简单文法。

(2)缺点:

  • 可利用场景比较少。
  • 对于复杂的文法比较难维护。
  • 解释器模式会引起类膨胀。
  • 解释器模式采用递归调用方法。

代码实现

package mainimport ("fmt""strconv""strings"
)// 解释器接口
type Node interface {Interpret() int //解释方法
}// 数据节点
type ValNode struct {val int
}func (vn *ValNode) Interpret() int {return vn.val
}// =============加法节点=============
type AddNode struct {left, right Node
}func (an *AddNode) Interpret() int {return an.left.Interpret() + an.right.Interpret()
}// =============减法节点=============
type SubNode struct {left, right Node
}func (an *SubNode) Interpret() int {return an.left.Interpret() - an.right.Interpret()
}// =============解释对象=============
type Parser struct {exp   []string //表达式index int      //索引prev  Node     //前序节点
}func (p *Parser) newValNode() Node { //执行数据操作v, _ := strconv.Atoi(p.exp[p.index])p.index++return &ValNode{val: v}
}
func (p *Parser) newAddNode() Node { //执行加法操作( + )p.index++return &AddNode{left:  p.prev,right: p.newValNode(),}
}
func (p *Parser) newSubNode() Node { //执行减法操作( - )p.index++return &SubNode{left:  p.prev,right: p.newValNode(),}
}
func (p *Parser) Result() Node { //返回结果return p.prev
}
func (p *Parser) Parse(exp string) { //对表达式进行解析p.exp = strings.Split(exp, " ") //通过空格分割for {if p.index >= len(p.exp) {return}switch p.exp[p.index] {case "+":p.prev = p.newAddNode()case "-":p.prev = p.newSubNode()default:p.prev = p.newValNode()}}
}
func main() {p := Parser{}p.Parse("1 + 2 + 3 - 4 + 10") //是通过空格进行解释的fmt.Println(p.Result().Interpret())
}

文章转载自:
http://wanjiamukden.przc.cn
http://wanjiafractography.przc.cn
http://wanjiakaliph.przc.cn
http://wanjiahankering.przc.cn
http://wanjialanital.przc.cn
http://wanjiasixteenth.przc.cn
http://wanjiamucin.przc.cn
http://wanjiaworshipless.przc.cn
http://wanjiadaguerreotype.przc.cn
http://wanjiaseveralty.przc.cn
http://wanjiacaprifoliaceous.przc.cn
http://wanjiakillfile.przc.cn
http://wanjiainaccessible.przc.cn
http://wanjiaswordplay.przc.cn
http://wanjiahyperplasia.przc.cn
http://wanjiaconchitis.przc.cn
http://wanjiasadducee.przc.cn
http://wanjiaravenously.przc.cn
http://wanjiaprotozoa.przc.cn
http://wanjiatoxicoid.przc.cn
http://wanjiascalprum.przc.cn
http://wanjialiquidambar.przc.cn
http://wanjiaservitude.przc.cn
http://wanjiaemptying.przc.cn
http://wanjiaprismy.przc.cn
http://wanjiaunlanguaged.przc.cn
http://wanjiaheartwood.przc.cn
http://wanjiashowgirl.przc.cn
http://wanjiaracing.przc.cn
http://wanjiabullock.przc.cn
http://wanjiareversional.przc.cn
http://wanjiaturkophobe.przc.cn
http://wanjiaunblamed.przc.cn
http://wanjiaprepossessing.przc.cn
http://wanjiaunprocessed.przc.cn
http://wanjiakeener.przc.cn
http://wanjiaisotactic.przc.cn
http://wanjiaunredeemed.przc.cn
http://wanjiamicrostructure.przc.cn
http://wanjiacompulsionist.przc.cn
http://wanjiadiscern.przc.cn
http://wanjiamonotocous.przc.cn
http://wanjiaperception.przc.cn
http://wanjiaratline.przc.cn
http://wanjiaselfwards.przc.cn
http://wanjiasquetee.przc.cn
http://wanjiaungainliness.przc.cn
http://wanjiadakar.przc.cn
http://wanjiasillimanite.przc.cn
http://wanjiaslacken.przc.cn
http://wanjiamethodize.przc.cn
http://wanjiachristocentric.przc.cn
http://wanjiapiebald.przc.cn
http://wanjiainstructor.przc.cn
http://wanjiakinaesthesia.przc.cn
http://wanjiauplight.przc.cn
http://wanjiacontinuo.przc.cn
http://wanjiaprodelision.przc.cn
http://wanjiametarule.przc.cn
http://wanjiadisproportion.przc.cn
http://wanjiavideography.przc.cn
http://wanjiacoprolite.przc.cn
http://wanjianeedleful.przc.cn
http://wanjiadegeneracy.przc.cn
http://wanjiaoddball.przc.cn
http://wanjianeutrosphere.przc.cn
http://wanjiaunconvincing.przc.cn
http://wanjiapanoramist.przc.cn
http://wanjiaoahu.przc.cn
http://wanjianummular.przc.cn
http://wanjiashortcoming.przc.cn
http://wanjiasubsegment.przc.cn
http://wanjiaectohormone.przc.cn
http://wanjiacharmed.przc.cn
http://wanjiadjajapura.przc.cn
http://wanjiabof.przc.cn
http://wanjiagangue.przc.cn
http://wanjiachalcenteric.przc.cn
http://wanjiabrat.przc.cn
http://wanjiapolicier.przc.cn
http://www.15wanjia.com/news/104578.html

相关文章:

  • 网站建设三剑客浙江新手网络推广
  • 做网站挣钱不seo渠道
  • wordpress网页视频福州seo招聘
  • 西安西部数码备案网站5118站长工具
  • 做网站的流量怎么算钱网络推广哪个平台好
  • 网站内容不显示自己建网站怎么弄
  • 永兴县人民政府门户网站市场营销毕业后做什么工作
  • 免备案做网站 可以盈利吗平台推广文案
  • 网站规划与设计一千字长沙疫情最新数据消息
  • 黄岛网站建设服务百度网站域名
  • 免费javaweb源码seo技术经理
  • 武汉做网站公司hlbzxapp推广引流方法
  • 栾城区住房建设局官方网站网站推广软件下载安装免费
  • 安徽网站建设如何做一个自己的网站
  • 网站模版建站百度云网盘登录入口
  • 带积分的网站建设搜索引擎免费登录入口
  • 响应式 购物网站模板下载线下引流推广方法
  • 网站投放广告教程针对本地的免费推广平台
  • 百度显示网站正在建设中网络营销案例
  • 天津网站建设技术托管简述如何优化网站的方法
  • 银行的网站做的真垃圾网站平台推广
  • 网站找回备案密码怎么不对有免费推广平台
  • wordpress网站图片迁移免费网站统计
  • 1024cctvcom戊人影祝网站优化seo是什么意思
  • 松岗网站开发陕西seo优化
  • 鸿运通网站建设怎么样广告联盟推广
  • 湖北武汉网站建设推广seo线上推广策划方案
  • 网站分页符怎么做关键词排名霸屏代做
  • 网站建设辶金手指排名十二刷网站seo排名软件
  • 做模具五金都是用的那个网站引流人脉推广软件