1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9view code10using
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 }
送人玫瑰手留余香。。。。
編譯原理實驗 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...