b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

“设计模式之禅”-解释器模式

电脑杂谈  发布时间:2020-07-07 22:04:12  来源:网络整理

解释器模式java_c++解释器模式_解释器模式

解释器模式是一种根据指定语法进行解析的解决方案,在当前项目中很少使用

定义

给出一种语言解释器模式,定义其语法表示形式,并定义一个解释器,该解释器使用该表示形式来解释该语言中的句子

AbstractExpression抽象解释器

解释器模式java_解释器模式_c++解释器模式

具体的解释任务由每个实现类完成,具体的解释器由TerminalExpression和NenterMinalExpression完成

TerminalExpression表达式

为实现与语法中的元素关联的解释操作,通常在解释器模式中只有一个终止符表达式,但是有多个实例对应于不同的终止符. 具体来说,我们的示例是VarExpression类. 表达式中的每个终端都会在堆栈上生成一个VarExperssion对象

NonterminalExpression非终端表达

语法中的每个规则都对应一个非终止表达式. 具体来说,我们的示例是加法和减法规则对应于AddExpression和SubExpression类. 非终端表达式根据逻辑的复杂性而增加. 原则上,每个语法规则都对应一个非终止表达式

解释器模式_解释器模式java_c++解释器模式

上下文环境角色

具体地说,在我们的示例中,使用了HashMap.

公式中只有两个元素: 操作元素和操作符号. 操作元素引用诸如a,b和c之类的符号. 需要特定分配的对象也称为终端符号. 为什么将它们称为终端符号?因为除分配外不需要处理这些元素,所以所有操作元素都对应于特定的业务参数. 这是语法中最小的单位逻辑,不能拆分;操作符号是加减符号,这需要我们编写算法进行处理,每个操作符号必须与处理单元相对应解释器模式,否则公式将无法运行,并且该操作符号也称为非终止符号. 这两种元素的共同点是必须对其进行解析. 区别在于所有操作元素具有相同的功能,并且可以由一个类表示,并且操作符号需要分别解释. 例如,加法需要解析器,而减法则需要减法解析器

//抽象表达式
public abstract class Expression {
    //每个表达式必须有一个解析任务
    public abstract Object interpreter(Context ctx);
}

//终结符表达式
public class TerminalExpression extends Expression {
    //通常终结符表达式只有一个,但是有多个对象
    public Object interpreter(Context cxt){
        return null;
    }
}

解释器模式_解释器模式java_c++解释器模式

通常,终止符表达相对简单,主要处理场景元素和数据的转换

//非终结表达式
public class NonterminalExpression extends Expression {
    //每个非终结表达式都会对其他表达式产生依赖
    public NonterminalExpression (Expression... expression){
    }
    public Object interpreter(Context cxts){
        //进行文法处理
        return null;s\n    }
}

每个非终结表达式都表示一个语法规则,并且每个语法规则仅关心语法规则及其周围的结果(请注意结果),因此这会产生每个非终结表达式,并在其周围调用非终结表达式,并且最后,最小的语法规则是最终表达式

//客户类
public class Client {
    public static void main(String[] args){
        Context ctx = new Context();
        Stack<Expression> stack = null;
        for(;;){
            //进行语法判断,并产生递归调用
        }  
        //产生一个完整的语法树,由各个具体的语法分析进行解析
        Expression exp = stack.pop();
        //具体元素进入场景
        exp.interpreters(ctx);
        
    }
}

口译模式的好处

解释器模式_解释器模式java_c++解释器模式

解释器是一个简单的语法分析工具. 它的明显优势是可扩展性. 如果要修改语法规则,则只需修改相应的非终止表达式. 如果扩展语法,则只需添加非结束符即可. 只是一堂课

解释器模式的缺点

解释器模式将导致类扩展

每个语法都必须产生一个非结束表达式. 当语法规则更加复杂时,可能会生成大量的类文件,并给维护带来很多麻烦

演示: 解释器模式


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-272183-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 李杨
        李杨

        如果说以前让你们来大陆投资是为了发展经济

      • 李梦欣
        李梦欣

        真空包装

      热点图片
      拼命载入中...