CSUFT 編譯原理實驗二LL(1)文法分析

2022-08-09 06:03:11 字數 1824 閱讀 7196

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9

10using

namespace

std;

1112

char a[20];/*

分析棧*/

13char b[20];/*

剩餘串*/

14char v1[20]= ; /*

終結符

*/15

char v2[20]= ; /*

非終結符

*/16

17int j=0,b=0,top=0,l;/*

l為輸入串長度

*/18

char

x,ch;

19int k=1;20

intm,n;

21int flag=0,finish=0;22

23 typedef struct type/*

產生式型別定義

*/24

type;

2930 type e,t,g,g1,s,s1,f,f1,cha;/*

結構體變數

*/31 type c[10][10];/*

**分析表

*/32

33void

init()

3469

70void print()/*

輸出分析棧

*/71

7778

void print1()/*

輸出剩餘串

*/79

87int

main()

88105 b[j]=ch;

106 j++;

107 }while(ch!='#'

);108 l=j;/*

分析串長度

*/109 ch=b[0];/*

當前分析字元

*/110 a[top]='#'

;111 a[++top]='

e';/*

'#','e'進棧

*/112 printf("

步驟\t\t分析棧 \t\t剩餘字元 \t\t所用產生式 \n");

113114

do131

}132

if(flag==1)/*

如果是終結符

*/133

142if(x==ch)

143150

/*else //出錯處理

151*/

157}

158else

/*非終結符處理

*/159

166for(j=0; j<=5; j++)

167if(ch==v1[j])

168172 cha=c[m][n];

173if(cha.origin!='

n')/*

判斷是否為空

*/174

187else

//出錯處理 調整順序

188194

195}

196197 }while(top!=-1); //

當分析棧不為空

198199

return0;

200 }

view code

送人玫瑰手留余香。。。。

編譯原理實驗 LL(1)文法

目標任務 實現 ll 1 分析中控制程式 表驅動程式 完成以下描述算術表示式的 ll 1 文法的 ll 1 分析程式。g e e te e ate t ft t mft f e i a m 說明 終結符號 i 為使用者定義的簡單變數,即識別符號的定義。compiler3.cpp 定義控制台應用程式的...

編譯原理 LL 1 語法分析

直接輸入根據已知文法構造的分析表m,對於輸入的文法和符號串,所編制的語法分析程式應能正確判斷此串是否為文法的句子,並要求輸出分析過程。c 實現如下 includeusing namespace std const int l num 100000 const int max 100 分析表容量 co...

編譯原理 實驗四 LL 1 語法分析(三)

實驗四 ll 1 語法分析 三 2學時 一 實驗目的 1 熟悉ll 1 語法分析的基本原理,語法分析的過程,以及語法分析中要注意的一些問題。2.複習高階語言及線性表 棧 圖等典型資料結構,進一步加強用高階語言來解決實際問題的能力。二 實驗內容 將實驗三編寫的程式的基礎之上,實現下面的功能 按照教材5...