日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

130242014018-郑志良-第2次实验

發(fā)布時(shí)間:2023/12/13 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 130242014018-郑志良-第2次实验 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、實(shí)驗(yàn)?zāi)康?/p>

1.熟悉體系結(jié)構(gòu)的風(fēng)格的概念

2.理解和應(yīng)用管道過濾器型的風(fēng)格。

3、理解解釋器的原理

4、理解編譯器模型

二、實(shí)驗(yàn)環(huán)境

硬件:?

軟件:Python或任何一種自己喜歡的語言

三、實(shí)驗(yàn)內(nèi)容

1、實(shí)現(xiàn)“四則運(yùn)算”的簡易翻譯器。

結(jié)果要求:

1)實(shí)現(xiàn)加減乘除四則運(yùn)算,允許同時(shí)又多個(gè)操作數(shù),如:2+3*5-6 結(jié)果是11

2)被操作數(shù)為整數(shù),整數(shù)可以有多位

3)處理空格

4)輸入錯(cuò)誤顯示錯(cuò)誤提示,并返回命令狀態(tài)“CALC”

? 圖1 ? ?實(shí)驗(yàn)結(jié)果示例

加強(qiáng)練習(xí):

1、有能力的同學(xué),可以嘗試實(shí)現(xiàn)賦值語句,例如x=2+3*5-6,返回x=11。(注意:要實(shí)現(xiàn)解釋器的功能,而不是只是顯示)

2、嘗試實(shí)現(xiàn)自增和自減符號,例如x++?

2、采用管道-過濾器(Pipes and Filters)風(fēng)格實(shí)現(xiàn)解釋器

? ? ? ? ? ? ? ? ? ? ? ? 圖2 ?管道-過濾器風(fēng)格

? ? ? ? ? ? ? ? ? ? ?圖 3 ?編譯器模型示意圖

本實(shí)驗(yàn),實(shí)現(xiàn)的是詞法分析和語法分析兩個(gè)部分。

四、實(shí)驗(yàn)步驟:

? ??#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"
int n=0;
char record[20];
float product();
float change();
float muli()
{
? ? float summ;
? ? summ=product();
? ? while(record[n]=='-'||record[n]=='+')
? ?{
??switch(record[n])
? ? ? {
? ? ? ? case '+':n++;summ+=product();break;
? ? ? ? case '-':n++;summ-=product();break;
? ? ? ?}
? ? }
?return summ;
}
float product()
{
?float sump;
?sump=change();
?while(record[n]=='*'||record[n]=='/')
?{
??switch(record[n])
??{
???case '*':n++;sump*=change();break;
???case '/':n++;sump/=change();break;
??}
?}
?return sump;
}
float change()
{
?float sumc;
?char? rec[20],i=0;
?if(record[n]=='(')
?{
??n++;
??sumc=muli();
?}
?if(record[n]==')')
? n++;
? while(isdigit(record[n])||record[n]=='.')
? {
? ?while(isdigit(record[n])||record[n]=='.')
? ??rec[i++]=record[n++];
? ??rec[i]='\0';
? ??sumc=atof(rec);
? }
? return? sumc;?
}
void main()
{
?while(1)
?{
?n=0;
?scanf("%s",record);
?printf("%s=%g\n",record,muli());
?}??
}

?

對應(yīng)結(jié)構(gòu)圖:

?

五、實(shí)驗(yàn)總結(jié)

?

轉(zhuǎn)載于:https://www.cnblogs.com/zzl1/p/7748750.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的130242014018-郑志良-第2次实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。