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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

递归下降文法C语言实验报告,递归下降语法分析器实验报告.doc

發(fā)布時(shí)間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 递归下降文法C语言实验报告,递归下降语法分析器实验报告.doc 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

遞歸下降語法分析器實(shí)驗(yàn)報(bào)告

編譯原理實(shí)驗(yàn)報(bào)告

題目: 遞歸下降語法分析器

學(xué) 院 計(jì)算機(jī)科學(xué)與技術(shù)

專 業(yè) xxxxxxxxxxxxxxxx

學(xué) 號(hào) xxxxxxxxxxxx

姓 名 寧劍

指導(dǎo)教師 xx

20xx年xx月xx日

遞歸下降語法分析器

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

???? 了解語法分析的內(nèi)部工作原理,通過在本次實(shí)驗(yàn)中運(yùn)用一定的編程技巧,掌握對(duì)表達(dá)式進(jìn)行處理的一種方法。

算術(shù)表達(dá)式的文法可以是可以根據(jù)需要適當(dāng)改變:

→E+E|E-E|E*E|E/E|(E)|i

??? ?根據(jù)遞歸下降分析法或預(yù)測分析法 ,對(duì)表達(dá)式進(jìn)行語法分析 ,判斷一個(gè)表達(dá)式是否正確 。

(1) 準(zhǔn)備:1. 閱讀課本有關(guān)章節(jié),確定算術(shù)表達(dá)式的文法(設(shè)計(jì)出預(yù)測分析表2. 考慮好設(shè)計(jì)方案;3. 設(shè)計(jì)出模塊結(jié)構(gòu) 、測試數(shù)據(jù),初步編制好程序。

(2) 上機(jī)調(diào)試,發(fā)現(xiàn)錯(cuò)誤,分析錯(cuò)誤,再修改完善。教師根據(jù)學(xué)生的設(shè)計(jì)方案與學(xué)生進(jìn)行探討,以修改方案和代碼 。

(3)改造后的文法:E→E+T|E-T|T

T→TF|T/F|F

F→F^|P

P→c |id| (E)

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

計(jì)算機(jī) VC++軟件#include

#include

#include

#include

#include

void error();

void terror();

void Scanner();

char sym=' ';

int i=0;

char strToken[30]={""};

FILE *in;

void E();

void E1();

void F();

void Retract(char str[30]){

for(int j=0;j<30;j++){

str[j]=0;

}

}

void Scanner(){

sym=fgetc(in);

if (isspace(sym)){

while(1){

if(isspace(sym)){

sym=fgetc(in);

}

else break;

}

}

if(isdigit(sym)){

while(1){

if (isdigit(sym)){

strToken[i]=sym;

i++;

sym=fgetc(in);

}

else{

printf("%s",strToken);

i=0;

Retract(strToken);

fseek(in,-2,1);

sym=fgetc(in);

break;

}

}

}

else{

if(sym=='+'){

printf("+");

}

else if(sym=='-'){

printf("-");

}

else if(sym=='*'){

printf("*");

}

else if(sym=='/'){

printf("/");

}

else if(sym=='^'){

printf("^");

}

else if(sym=='('){

printf("(");

}

else if(sym==')'){

printf(")");

}

}

}

void F(){

if(isdigit(sym)){

Scanner();

}

else if (sym=='('){

Scanner();

E();

if(sym==')'){

Scanner();

}

else error();

}

else terror();

}

void T1(){

if(sym=='*'||sym=='/'||sym=='^'){

Scanner();

F();

T1();

}

}

void T(){

F();

T1();

}

void E1(){

if (sym=='+'||sym=='-'){

Scanner();

T();

E1();

}

}

void E(){

T();

E1();

}

void error(){

printf("\nThis is a wrong phrase!\n");

exit(0);

}

void terror(

總結(jié)

以上是生活随笔為你收集整理的递归下降文法C语言实验报告,递归下降语法分析器实验报告.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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