1. 模式结构
2. 角色
(1) AbstractExpression(抽象表达式)
所有表达式的父类,声明了统一的方法
(2) TerminalExpression(终结表达式)
一般为具体值
(3) NonterminalExpression(非终结符表达式)
可设置多个该类型子类,表示多种不同操作
类内部聚合多个抽象表达式
(4) Context(环境类)
存储全局信息,可省略
(5) Client(客户类)
一般解释器最终返回一个抽象表达式类,在客户类中调用抽象表达式类返回最终结果
有时候为了简化客户类代码,可以将构建最终抽象表达式的过程封装到一个解释器封装类中,通常用栈来实现表达式构建过程
3. 文法规则
例:
expression :: = value | symbol
symbol :: expression ‘+’ expression | expression ‘-“ expression
value :: an integer //一个整数值,终结符表达式
4. 抽象语法树
表示1+4-4+1
5. 特点
可以将一个需要解释执行的语言中的句子表示为一个抽象语法树
一些重复出现的问题可以用一种简单的语言来进行表述
6. 应用
开发简易的编译器
数学表达式解析器
正则表达式解析器