-
特点:Java、kotlin、groovy等JVM编程语言的编译器就是一个解析器,因为它需要正确识别编程语言的语法和逻辑,才能编译出正确的字节码文件,这样JVM才能正常的运行程序,这些编程语言相比于编译器就是迷你语言,类似的还有正则表达式、批处理语言等都是属于迷你语言。
使用解析器模式就相当于创建一套迷你编程语言,再创建一个解析器解析迷你语言编写的“程序”。
解析器模式里主要是定义表达式,定义方式可以参考BNF,相当于编程语言的语法,其次是Context(文脉、上下文),上下文即语境、语意。话出必有因,有因必有果,因从哪里来,果到哪里去。 - 角色:
角色名称 | 角色职责 |
---|---|
AbstractExpression(抽象表达式) | 定义语法树节点的公共接口 |
TerminalExpression(终结符表达式) | 对应BNF中的终结符表达式 |
NonternimalExpression(非终结符表达式) | 对应BNF中非终结符表达式 |
Context(文脉、上下文) | 为语法解析提供上下文信息 |
Client(请求者) | 使用表达式角色推到语法树 |
BNF:Backus-Naur Form 或 Backus Normal Form 的略称,扩展的巴科斯范式 ,用于描述语法树。
-
角色关系:
代码示例:Interpreter
以上文献参考:《图解设计模式》