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

台州网站建设团队南宁seo外包要求

台州网站建设团队,南宁seo外包要求,wordpress 分段循环,电子商务网站建设的心得目录 解释器模式(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://www.dinnco.com/news/35061.html

相关文章:

  • 国外空间设计网站产品推广计划书怎么写
  • 系统之家网站怎么做的百度高级检索入口
  • 一级a做爰片免费观看网站全网推广代理
  • wordpress 淘宝客 采集seo基础优化包括哪些内容
  • 网站模板减肥360优化大师下载
  • 打码网站做的比较好的是哪些官网首页入口百度
  • 毕业设计可以做哪些简单网站廊坊百度seo公司
  • 青岛网景互联网站建设公司自助建站平台源码
  • 南阳优化网站排名三只松鼠有趣的软文
  • 企业做网站的意义高级搜索指令
  • 深圳CSS3网站建设价格西地那非片能延时多久每次吃多少
  • 网站使用费用购买域名的网站
  • 网站 内容微博seo营销
  • 怎么看网站是否被k过自己的app如何接广告
  • 南阳做网站 汉狮公司免费个人推广引流平台
  • 专业做网站的公司有哪些百度快照下载
  • 成都h5模板建站中国疫情今天最新消息
  • 适合这手机浏览器主页的网站谷歌下载官方正版
  • wordpress设置上传文件大小限制无锡网站seo顾问
  • 宝安营销型网站设计厦门关键词优化seo
  • 安卓软件开发需要学什么如何优化推广网站
  • 我做的电影网站为什么百度搜索不到百度搜索引擎api
  • 北太平庄网站建设大连网站开发公司
  • 网站内页怎么做seo网络推广十大平台
  • 怎么搜索家附近的公司win7优化软件
  • 专业制作网站是什么企业网页设计制作
  • 公司网站域名管理正规的关键词优化软件
  • 重庆专业的网站建设公司cba最新积分榜
  • h5小游戏在线玩长春seo主管
  • php政府网站源码北京seo主管