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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

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

遞歸下降語法分析器實驗報告

編譯原理實驗報告

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

學 院 計算機科學與技術

專 業 xxxxxxxxxxxxxxxx

學 號 xxxxxxxxxxxx

姓 名 寧劍

指導教師 xx

20xx年xx月xx日

遞歸下降語法分析器

一、實驗目的?

???? 了解語法分析的內部工作原理,通過在本次實驗中運用一定的編程技巧,掌握對表達式進行處理的一種方法。

算術表達式的文法可以是可以根據需要適當改變:

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

??? ?根據遞歸下降分析法或預測分析法 ,對表達式進行語法分析 ,判斷一個表達式是否正確 。

(1) 準備:1. 閱讀課本有關章節,確定算術表達式的文法(設計出預測分析表2. 考慮好設計方案;3. 設計出模塊結構 、測試數據,初步編制好程序。

(2) 上機調試,發現錯誤,分析錯誤,再修改完善。教師根據學生的設計方案與學生進行探討,以修改方案和代碼 。

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

T→TF|T/F|F

F→F^|P

P→c |id| (E)

四、實驗環境?

計算機 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(

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。