1. 程式人生 > >130242014047+徐曉敏+第二次實驗

130242014047+徐曉敏+第二次實驗

count 輸入 bstr 整數 同時 環境 sub python calc

軟件體系結構的第二次實驗(解釋器風格與管道過濾器風格)

一、實驗目的

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