實驗二遞迴下降語法分析

2023-01-13 08:33:03 字數 875 閱讀 8633

實現乙個遞迴下降語法分析程式,識別使用者輸入的算術表示式。

1、文法如下:

ete`

e』+te』|-te』|

tft`

t』*ft』|/ft』|

f(e)|i

2、求取各非終結符的first及follow集合

3、程式設計實現下降遞迴分析法,識別從鍵盤輸入的關於整數或浮點數的算術表示式(在此,上述文法中的i代表整數或浮點數)

4、對於語法錯誤,要指出錯誤具體資訊。

5、執行例項如下:

1、紙質實驗報告內容:實驗內容、非終結符的first及follow集合、正確表示式與錯誤表示式各舉一例進行測試並給出結果、核心源**。

2、將本次實驗**(.c、.cpp、.

j**a等**檔案,刪除編譯產生的所有其他檔案,不要打包)在規定時間內以作業附件(不可**編輯、貼上**)的形式提交至**,自己儲存以備課程設計(本部有畢業設計要求的學生)參考。

3、紙質實驗報告提交時間:臨時要求。

實驗指導(參考)

一、實驗步驟

1、求取各非終結符的first及follow集合;

2、設計幾個函式 e(); ep(); t(); tp(); f();運用first集合進行遞迴函式選擇,運用follow集合進行出錯情況判斷;

3、設計主函式:從鍵盤接受乙個算術表示式串;在串尾新增尾部標誌』#』;呼叫函式e()進行遞迴下降分析。

二、如何識別整數與浮點數

在函式f()中要涉及到如何識別整數與浮點數。識別的方法是:只要碰到『0』~『9』之間的字元就一直迴圈,迴圈到不是數字字元與小數點字元』.

』為止,其間要運用乙個標誌變數來保證最多只能出現乙個小數點,否則應該報錯。

上述迴圈結束即表示識別了乙個數,也即表示式文法中的i。

語法分析實驗報告樣例

呼叫上次實驗編寫的詞法分析程式,實現 類pascal語言子集 的語法分析功能。該語言的語法元素包括以下幾條 程式開始符號 program 變數定義 varint string a,b,c,賦值語句 x a b c 復合語句 以begin end作為開始和結束的語句 分支語句 if then,if t...

編譯原理 語法分析

include include include include using namespace std define maxn 20000 int syn,p,sum,kk,m,n,row,error double dsum,pos char index 800 len 記錄指數形式的浮點數 cha...

語法分析器

部分核心 如下 first follow 計算first集,u xx.void first int u else else j if j p i rlength 當產生式右部都能推出空時 addfirst u,1 加入first集 void addfirst int u,int nch 當數值小於1...