27 行为型模式-解释器模式

1 解释器模式介绍
java 复制代码
//用于两个整数相加的方法
public static int add(int a , int b){
return a + b;
}
//用于三个整数相加的方法
public static int add(int a , int b,int c){
return a + b + c;
}
public static int add(Integer ... arr){
int sum = 0;
for(Integer num : arr){
sum += num;
上面的形式比较单一、有限,如果形式变化非常多,这就不符合要求,因为加
法和减法运算,两个运算符与数值可以有无限种组合方式。比如: 5-3+2-1, 10-
5+20....
文法规则和抽象语法树
解释器模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句
子,以及如何解释这些句子.
在上面提到的加法/减法解释器中,每一个输入表达式(比如:2+3+4-5) 都包含了3
个语言单位,可以使用下面的文法规则定义:
文法是用于描述语言的语法结构的形式规则。
注意: 这里的符号"::="表示"定义为"的意思,竖线 | 表示或,左右的其中一
个,引号内为字符本身,引号外为语法。
上面规则描述为 :
表达式可以是一个值,也可以是plus或者minus运算,而plus和minus又是由表
达式结合运算符构成,值的类型为整型数。
抽象语法树:
在解释器模式中还可以通过一种称为抽象语法树的图形方式来直观的表示语言
的构成,每一棵抽象语法树对应一个语言实例,例如加法/减法表达式语言中的语句
" 1+ 2 + 3 - 4 + 1" 可以通过下面的抽象语法树表示
}
return sum;
}
相关推荐
s912360101几秒前
【rust】生成带白边的标准二维码
开发语言·后端·rust
weixin_307779137 分钟前
Jenkins Jakarta Mail API 插件:邮件功能的核心库
运维·开发语言·架构·jenkins
郝学胜-神的一滴13 分钟前
Linux进程管理:借助信号回收进程
linux·服务器·开发语言·c++·程序人生
WYiQIU14 分钟前
突破字节前端2-1⾯试: JS异步编程问题应答范式及进阶(视频教学及完整源码笔记)
开发语言·前端·javascript·vue.js·笔记·面试·github
quikai198114 分钟前
python练习第四组
开发语言·前端·python
爱上妖精的尾巴17 分钟前
5-40 WPS JS宏 综合实例应用-5(求字符串中的最大值记录)
开发语言·前端·javascript·wps·js宏·jsa
TT哇17 分钟前
【@NotBlank】@NotBlank与@NotEmpty与@NotNull区别
java·开发语言
mozhiyan219 分钟前
Spring Tool Suite4(STS)下载安装保姆级教程(附安装包)
java·spring·eclipse·sts4·sts4下载教程
用户03321266636719 分钟前
Java 读取或删除 Excel 文件文档属性:Spire.XLS for Java 实用指南
java
忘记92624 分钟前
GET 请求与 POST 请求的核心区别
java