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;
}
相关推荐
IT 行者7 分钟前
GitHub Spec Kit 实战(五):/speckit.tasks 怎么拆——Spec Kit 五部曲收官
java·ai编程·claude
AC赳赳老秦13 分钟前
OpenClaw+Power Apps 实战:自动生成 Power Apps 应用、连接 Excel 数据源
大数据·开发语言·python·serverless·excel·deepseek·openclaw
提笔了无痕15 分钟前
如何用Go实现整套RAG流程
开发语言·后端·golang
(Charon)17 分钟前
【C++ 面试高频基础:指针、引用、const、static、new/delete 总结】
java·开发语言
Yeats_Liao35 分钟前
Feed流系统设计(三):数据模型与存储设计,从表结构到Redis收件箱
java·javascript·redis
JiaHao汤41 分钟前
分布式事务方案全景:从理论到 Seata 落地
java·分布式·spring·spring cloud
2601_961875241 小时前
法考考试时间安排及科目|时间表|资料已整理
开发语言·c#·inverted-index·suffix-tree·sstable·r-tree·lsm-tree
AI科技星1 小时前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi
geovindu1 小时前
go: Generators Pattern
开发语言·后端·设计模式·golang·生成器模式
色空大师1 小时前
【debug调试详解-idea】
java·ide·intellij-idea·调试·远程调试