解释器模式
定义
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
类图
AbstractExpression(抽象表达式)
定义了语法树节点的共同接口。
TerminalExpression(终结符表达式)
对应BNF中的终结符表达式
NonterminalExpression(非终结符表达式)
对应BNF中的非终结符表达式
Context(文脉,上下文)
为解释器语法提供了必要的信息
Client(请求者)
为了推导语法数,Client会调用TerminalExpression和NonterminalExpression。
示例
类图
CommandListNode
1 | // <command list> ::= <command>* end |
CommandNode
1 | // <command> ::= <repeat command> | <primitive command> |
Context
1 | public class Context { |
Node
1 | public abstract class Node { |
ParseException
1 | public class ParseException extends Exception { |
PrimitiveCommandNode
1 | // <primitive command> ::= go | right | left |
ProgramNode
1 | // <program> ::= program <command list> |
RepeatCommandNode
1 | // <repeat command> ::= repeat <number> <command list> |
Main
1 | public class Main { |
program.txt
1 | program end |