130242014047+徐晓敏+第二次实验

软件体系结构的第二次实验(解释器风格与管道过滤器风格)

一、实验目的

1.熟悉体系结构的风格的概念

2.理解和应用管道过滤器型的风格。

3、理解解释器的原理

4、理解编译器模型

二、实验环境

硬件: 

软件:Python或任何一种自己喜欢的语言

三、实验内容

1、实现“四则运算”的简易翻译器。

结果要求:

1)实现加减乘除四则运算,允许同时又多个操作数,如:2+3*5-6 结果是11

2)被操作数为整数,整数可以有多位

3)处理空格

4)输入错误显示错误提示,并返回命令状态“CALC”

加强练习:

1、有能力的同学,可以尝试实现赋值语句,例如x=2+3*5-6,返回x=11。(注意:要实现解释器的功能,而不是只是显示)

2、尝试实现自增和自减符号,例如x++ 

2、采用管道-过滤器(Pipes and Filters)风格实现解释器

本实验,实现的是词法分析和语法分析两个部分。

四、实验步骤:    

代码示例:

Var count = function(str){ 

    var obj = str.lastobjOf("(");  

    if(obj > -1){  

         var endobj = str.objOf(")",obj);  

        if(endobj > -1){  

            var result = parse(str.substring(obj + 1,endobj));  

            return parse(str.substring(0,obj) + ("" + result) + str.substring(endobj + 1))   

        }  

    }  

  

    obj = str.objOf("+");  

    if(obj > -1){  

        return parse(str.substring(0,obj)) + parse(str.substring(obj + 1));  

    }  

    obj = str.lastobjOf("-");  

    if(obj > -1){  

        return parse(str.substring(0,obj)) - parse(str.substring(obj + 1));  

    }  

    obj = str.lastobjOf("*");  

    if(obj > -1){  

        return parse(str.substring(0,obj)) * parse(str.substring(obj + 1));  

    }  

    obj = str.lastobjOf("/");  

    if(obj > -1){  

        return parse(str.substring(0,obj)) / parse(str.substring(obj + 1));  

    }    

    if("" == str){   

        return 0;  

    }else{  

        return str- 1 + 1;  

    }  

posted @ 2017-10-28 20:38  小米啦啦啦  阅读(146)  评论(0编辑  收藏  举报