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+徐曉敏+第二次實驗