第十二次作業

2022-05-24 18:15:12 字數 2557 閱讀 8768

一、實驗目的:

利用c語言編制遞迴下降分析程式,並對簡單語言進行語法分析。

編制乙個遞迴下降分析程式,實現對詞法分析程式所提供的單詞序列的語法檢查和結構分析。

二、實驗原理

每個非終結符都對應乙個子程式。

該子程式根據下乙個輸入符號(select集)來確定按照哪乙個產生式進行處理,再根據該產生式的右端:

三、實驗要求說明

輸入單詞串,以「#」結束,如果是文法正確的句子,則輸出成功資訊,列印「success」,否則輸出「error」,並指出語法錯誤的型別及位置。

例如:輸入begin a:=9;x:=2*3;b:=a+x end #

輸出success

輸入x:=a+b*c  end #

輸出『end' error

四、實驗步驟

1.待分析的語言的語法(參考p90)

2.將其改為文法表示,至少包含

–語句–條件

–表示式

3. 消除其左遞迴

4. 提取公共左因子

5. select集計算

6. ll(1)文法判斷

7. 遞迴下降分析程式

#include "wordscan.h"

void lrparser();

void yucu();

void statement();

void expression();

void term();

void factor();

int kk=0;

void lrparser() else

} else

return;

}void yucu()

return;

}void statement() else

} else

return;

}void expression()

return;

}void term()

return;

}void factor()

} else

return;

}void main() while(ch!='#');

p=0;

scaner();

lrparser();

printf("語法分析結束!\n");

getch();

}2.?編寫掃瞄子程式?? wordscan.h

#include "string.h"

char prog[80],token[8];

int syn,p,m,n,sum=0;

char ch;

char *rwtab[6]= ;

void scaner()

token[m++]='\0';

syn=10;

p=p-1; //回退乙個字元

第十二次作業

目錄 1.編寫乙個程式,可以讀入乙個c 語言的原始檔 2.假定有兩個文字檔案 a.txt b.txt 請程式設計將它們合併為第三個文字檔案 c.txt 3 由鍵盤輸入n和m,程式設計將n m之間的素數儲存到乙個文字檔案 sushu.txt 中 4.已經有乙個文字檔案 data.txt 內容包括多名學...

第十二次作業

includestruct student void add while ch y ch y intmain 這個學生管理系統真的不會做 請教組長張照行並按照組長 一點一點打出來 includestruct student intmain fclose fp fp fopen g output.tx...

第十二次作業

1.實現乙個選單 可以切換 可以返回主選單 主選單1.登入 2.註冊 3.輸出水仙花數 4.退出程式 請選擇 選擇後實現對應的功能 3.使用遞迴函式,求階乘,並呼叫求5的階乘.include int jc int n if n 1 return 1 else return n jc n 1 main...