130242014047+徐晓敏+第二次实验
Posted 小米啦啦啦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}
以上是关于130242014047+徐晓敏+第二次实验的主要内容,如果未能解决你的问题,请参考以下文章