1、解释器模式(Interpreter Pattern)是一种按照规定语法进行解析的方案,在现在的项目中使用很少。其定义如下:Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language(给定一门语言,定义它的文法一种表示,并定义一个解析器,该解析器使用该标识来解释语言中的句子)
2、解析器的对象:
一、AbstractExpresion-抽象解析器
具体的解析任务有各个实现类完成,具体的解析器分别由Terminalexpression和Nonterminalexpression完成。
二、TerminalExpression-终结符表达式
实现与文法中的元素相关联的解释操作,通常一个解析器模式中只有一个终结符表达式但是有多个实例,对应不同的终结符。具体我们的例子就是VarExpression类,表达式中的每个终结符都在栈中产生了一个VarExpression对象
三、NonterminalExpression-非终结符表达式
文法中的每条规则对应于一个非终结表达式。具体到我们的例子就是加减法规则分别对应到AddExpression和SubExpression连个类,非终结符表达式根据逻辑的复杂程度而增加,原则上每个文法都对应一个非终结符表达式。
四、Content-环境角色
具体到我们的例子是用HashMap代替。
3、重新开始不吃晚饭的行动。从前的时候为了减肥,不吃晚饭了。现在因为要学习,读书。暂时把这项规定取消了。现在看书已经进入了状态,那么不吃晚饭的规定又要开始了。应该把不吃晚饭作为一条新的戒律坚持下去。为了身体的健康,不吃晚饭还是比较好的措施。
不知道为什么,意志力很容易就被打败了。
2、解析器的对象:
一、AbstractExpresion-抽象解析器
具体的解析任务有各个实现类完成,具体的解析器分别由Terminalexpression和Nonterminalexpression完成。
二、TerminalExpression-终结符表达式
实现与文法中的元素相关联的解释操作,通常一个解析器模式中只有一个终结符表达式但是有多个实例,对应不同的终结符。具体我们的例子就是VarExpression类,表达式中的每个终结符都在栈中产生了一个VarExpression对象
三、NonterminalExpression-非终结符表达式
文法中的每条规则对应于一个非终结表达式。具体到我们的例子就是加减法规则分别对应到AddExpression和SubExpression连个类,非终结符表达式根据逻辑的复杂程度而增加,原则上每个文法都对应一个非终结符表达式。
四、Content-环境角色
具体到我们的例子是用HashMap代替。
3、重新开始不吃晚饭的行动。从前的时候为了减肥,不吃晚饭了。现在因为要学习,读书。暂时把这项规定取消了。现在看书已经进入了状态,那么不吃晚饭的规定又要开始了。应该把不吃晚饭作为一条新的戒律坚持下去。为了身体的健康,不吃晚饭还是比较好的措施。
不知道为什么,意志力很容易就被打败了。