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

长春做网站公司长春网站排名大连网站开发公司排名

长春做网站公司长春网站排名,大连网站开发公司排名,百度发广告需要多少钱,淘宝客网站如何让做目录 一. 前言 二. 实现 三. 优缺点 一. 前言 解释器模式(Interpreter Pattern)指给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子,属于行为型设计模式。是…

目录

一. 前言

二. 实现

三. 优缺点


一. 前言

    解释器模式(Interpreter Pattern)指给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子,属于行为型设计模式。是一种按照规定的文法(语法)进行解析的模式。其核心思想就是识别文法,构建解释。

二. 实现

TerminalExpression: 终结符表达式,每个终结符都需要一个 TerminalExpression。
NonterminalExpression:非终结符表达式,实现文法中与非终结符有关的解释操作。
Context: 上下文,包含解释器之外的一些全局信息。

案例:以下是一个规则检验器实现,具有 and 和 or 规则,通过规则可以构建一颗解析树,用来检验一个文本是否满足解析树定义的规则。
例如一颗解析树为 D And (A Or (B C)),文本 "D A" 满足该解析树定义的规则。
这里的 Context 指的是 String。

public abstract class Expression {public abstract boolean interpret(String str);
}
public class TerminalExpression extends Expression {private String literal = null;public TerminalExpression(String str) {literal = str;}public boolean interpret(String str) {StringTokenizer st = new StringTokenizer(str);while (st.hasMoreTokens()) {String test = st.nextToken();if (test.equals(literal)) {return true;}}return false;}
}
public class AndExpression extends Expression {private Expression expression1 = null;private Expression expression2 = null;public AndExpression(Expression expression1, Expression expression2) {this.expression1 = expression1;this.expression2 = expression2;}public boolean interpret(String str) {return expression1.interpret(str) && expression2.interpret(str);}
}
public class OrExpression extends Expression {private Expression expression1 = null;private Expression expression2 = null;public OrExpression(Expression expression1, Expression expression2) {this.expression1 = expression1;this.expression2 = expression2;}public boolean interpret(String str) {return expression1.interpret(str) || expression2.interpret(str);}
}
public class Client {/*** 构建解析树*/public static Expression buildInterpreterTree() {// LiteralExpression terminal1 = new TerminalExpression("A");Expression terminal2 = new TerminalExpression("B");Expression terminal3 = new TerminalExpression("C");Expression terminal4 = new TerminalExpression("D");// B CExpression alternation1 = new OrExpression(terminal2, terminal3);// A Or (B C)Expression alternation2 = new OrExpression(terminal1, alternation1);// D And (A Or (B C))return new AndExpression(terminal4, alternation2);}public static void main(String[] args) {Expression define = buildInterpreterTree();String context1 = "D A";String context2 = "A B";System.out.println(define.interpret(context1));System.out.println(define.interpret(context2));}
}
true
false

三. 优缺点

优点:
1. 由于语法由很多类表示,所以,当语法规则或者扩展语法时,只需要修改或者扩展表达式即可。
2. 对于简单的文法应当比较简单且易于实现,过于复杂的语法并不适合解释器模式。
缺点:
1.由于语法由很多类表示,过于复杂时,会产生大量的解释类,引起类臃肿,增加系统维护的难度。
2. 解释器模式采用递归调用方法,当完整表达式层级较深时,解释效率会下降。

JDK中的解释器模式
java.util.Pattern
java.text.Normalizer
javax.el.ELResolver

http://www.yayakq.cn/news/153162/

相关文章:

  • 免费的网站加速器一条龙平台
  • 设计网站大全铲鼠湖南岚鸿相信开发工具指的是什么
  • 网站运营总结线下推广图片
  • 太原集团网站建设一人有限责任公司
  • 电商网站设计教程那些提卡网站是怎么做的
  • 手机投资网站十大管理培训课程
  • 稻壳企业网站模板深圳开发软件公司
  • 网站建设图片大小邢台建设局官方网站
  • 网站建设要哪些seowordpress 文章查询
  • 科技公司建设网站网上在哪里打广告最有效
  • 企业网站关键词排名 s学大教育培训机构电话
  • 郑州做网站推广的公司哪家好网站地址验证失败
  • 佛山网站建设天博百度竞价托管外包
  • 为什么需要建设网站长春网站建设营销q479185700刷屏
  • 手机网站翻页底时自动链接wordpress 多个置顶
  • 网站建设服务器在国外如何打击网站建设怎么打广告
  • 成品网站w灬源码在线看做短租哪个网站好
  • 利用免费网站做SEO福建网站优化建设
  • 企业网站的建设目的有什么WordPress客户端
  • 海澜之家网站建设水平如何做网站活动
  • 品牌策划案例范文杭州江干区抖音seo品牌
  • 江苏城乡建设职业学院官方网站wordpress大开速度慢
  • 广州 网站设计平面设计培训班学费一般多少钱
  • 如何做优秀的视频网站设计做mla网站
  • 宁波网站建设信息网桂林建设网站公司
  • 免费做ppt的网站wordpress图片按钮
  • 做PPT素材用到的网站大学生网站建设策划书范文
  • 北京西站到大兴机场网站的推广策略
  • 现在还有人用asp做网站网站后台登陆密码忘记
  • 公司网站开发设计题目怎么写nginx php wordpress