Given a language,define a representation for its grammar along with an interpreter that uses the
representation to interpret sentences in the language.
很好玩,解析js脚本的ScriptManager(不仅仅js)
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
当有一个简单的语言需要解释执行,并且可以将该语言的每一个规则表示为一个类时,就可以使用解释器模式。
优点
1. 将每一个语法规则表示成一个类,方便与实现简单的语言。
2. 由于使用类表示语法的规则,可以较容易改变或扩展语言的行为。
3. 通过在类结构中加入新的方法,可以在解释的同时增加新的行为。
概念其实很简单。在有些问题上,我们可能希望自定定义简单的语言来描述,然后我们自己能解释它。
解释器模式一般包括四种角色:
1. 抽象表达式:该角色为一个接口,负责定义抽象的解释操作。
2. 终结符表达式(terminal expression):实现抽象表达式接口的类。
3. 非终结符表达式:也是实现抽象表达式的类。
4. 上下文(Context):包含解释器之外的一些全局信息。
使用该模式设计程序一般需要三个步骤:
1. 解析语句中的动作标记。
2. 将标记规约为动作。
3. 执行动作。
这种模式一般会应用到一些特殊的问题上,使用这种模式一般需要了解形式语言中的基本知识。
js内核就是一个强大的解释器。
简单的解释器模式,我们需要解释出来表达式的信息即可;而更深一层的,我们需要把表达式中的内容,
翻译成我们程序运行的一部分来执行。