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

平江网站设计多少钱重庆关键词排名推广

平江网站设计多少钱,重庆关键词排名推广,好用的日本ip地址,凡客诚品倒闭了吗给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 这种模式通常用于需要解释执行某种语言的场景,如正则表达式、SQL解析等。 解释器模式的核心组件。 抽象表达式(Ab…

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

这种模式通常用于需要解释执行某种语言的场景,如正则表达式、SQL解析等。

解释器模式的核心组件。

  • 抽象表达式(AbstractExpression):声明一个抽象的解释操作
  • 终结符表达式(TerminalExpression):实现与文法中的终结符相关的解释操作
  • 非终结符表达式(NonterminalExpression):实现文法规则的解释操作
  • 上下文(Context):包含解释器之外的一些全局信息
  • 客户端(Client):构建表示该文法定义的语言中一个特定句子的抽象语法树

下面通过实现一个简单的数学表达式的解释器,来演示解释器模式。

抽象表达式接口。

public interface Expression {int interpret();
}

终结符表达式实现。

public class NumberExpression implements Expression {private int number;public NumberExpression(int number) {this.number = number;}@Overridepublic int interpret() {return number;}
}

非终结符表达式(加法)。

public class AddExpression implements Expression {private Expression left;private Expression right;public AddExpression(Expression left, Expression right) {this.left = left;this.right = right;}@Overridepublic int interpret() {return left.interpret() + right.interpret();}
}

非终结符表达式(减法)。

public class SubtractExpression implements Expression {private Expression left;private Expression right;public SubtractExpression(Expression left, Expression right) {this.left = left;this.right = right;}@Overridepublic int interpret() {return left.interpret() - right.interpret();}
}

上下文类。

import java.util.Stack;public class ExpressionParser {public static Expression parse(String expression) {Stack<Expression> stack = new Stack<>();String[] tokens = expression.split(" ");for (int i = 0; i < tokens.length; i++) {String token = tokens[i];if (isOperator(token)) {Expression left = stack.pop();Expression right = new NumberExpression(Integer.parseInt(tokens[++i]));Expression operator = getOperatorExpression(token, left, right);stack.push(operator);} else {stack.push(new NumberExpression(Integer.parseInt(token)));}}return stack.pop();}private static boolean isOperator(String token) {return token.equals("+") || token.equals("-");}private static Expression getOperatorExpression(String operator, Expression left, Expression right) {switch (operator) {case "+": return new AddExpression(left, right);case "-": return new SubtractExpression(left, right);default: throw new IllegalArgumentException("Unknown operator: " + operator);}}
}

客户端,测试输出结果。

public class InterpreterDemo {public static void main(String[] args) {String expression = "1 + 2 - 3 + 4";Expression parsedExpression = ExpressionParser.parse(expression);int result = parsedExpression.interpret();System.out.println(expression + " = " + result);}
}

解释器模式为特定类型的问题提供了优雅的解决方案,但在实际应用中需要权衡其复杂性和性能影响。

总结

解释器模式通过定义语法树来实现对用户输入内容的解释执行。

解释器模式在 Java 中可能不是首选,如果遇到适用场景,可以考虑使用外部依赖库来代替。

http://www.dtcms.com/wzjs/269814.html

相关文章:

  • 只做网站的人员工资2022双11各大电商平台销售数据
  • web网站开发实例github磁力
  • 不建网站可不可以做cpasem分析
  • 检察院做网站的目的发布新闻稿
  • 辽宁网站建设电话app推广平台网站
  • ui网站界面设计模板阿里巴巴官网
  • 电商网站新闻怎么做深圳网络推广建站
  • 四川大学网站seo诊断报告windows优化大师破解版
  • 好看的网站地图样式移动排名提升软件
  • 怎样做才能让网站更受关注网络服务提供商
  • 网站友情链接对方网站没有加入本站链接对本站有没有影响?迅雷下载磁力天堂
  • 给企业做网站如何定价百度网站怎么做
  • 做图文的网站成都网站推广经理
  • 宁波做网站多少钱推广优化
  • 网站设计建设合同营销软文代写
  • 怀化三中网站百度首页精简版
  • 网站服务器在本地是指吉林seo技术交流
  • 怎么做二维码进入公司网站优化系统的软件
  • 网站建设参数公司业务推广
  • web网站开发的六个步骤wordpress官网入口
  • 南宁市建设厅网站西安网
  • 泉州手机端建站模板三亚网络推广
  • 武汉建设厅宿舍网站怎么查询搜索关键词
  • 现在做网站建设的公司多么百度seo报价方法
  • 东莞手机网站建设多少钱seo测试工具
  • 长春高铁站网络竞价托管公司
  • 做的比较好网站有哪些手游免费0加盟代理
  • 网站做多长时间才会成功百度网址是多少 百度知道
  • 用织梦做的网站ftp怎么登陆网络销售怎么聊客户
  • 网站开发所需人员seo入口