資源簡介
實驗2 文法的讀入、判定和處理
一、實驗目的
熟悉文法的結構,了解文法在計算機內的表示方法。
二、實驗內容
1、 設計一個表示文法的數據結構;
2、 從文本文件中讀入文法,利用定義的數據結構存放文法,并輸出;
3、 本實驗結果將來還有用。
三、實驗要求
1、 了解文法定義的4個部分:
G(Vn, Vt, S, P)
Vn 文法的非終結符號集合,在實驗中用大寫的英文字母表示;
Vt 文法的終結符號集合,在實驗中用小寫的英文字母表示;
S 開始符號,在實驗中是Vn集合中的一個元素;
P 產生式,分左部和右部,左部為非終結符號中的一個,右部為終結符號或非終結符號組成的字符串,如S-
代碼片段和文件信息
#include?
#include?
#include?
#define?MAX?20
char?x[20][100];???//用于存儲讀入的文法內容?
char?y[20][100];?????//用于存儲產生式?
int?maxline=0;??????????//初始化讀入內容的行數?
char?*Gdelete(char?ch[]);?????//定義刪除重復字符?
typedef?struct????//定義產生式的左部、右部?
{
???char?l[5];
???char?r[8];
}G;
G?g[MAX];
typedef?struct???//定義文法的四要素?
{
??char?v1[10];
??char?v2[10];
??char?s[1];
??char?p[100];
}GR;
GR?gr[MAX];
bool?isN(char?c)???//定義非終結符?
{
??if(c>=‘A‘&&c<=‘Z‘)
????return?1;
????else?return?0;
}
bool?isT(char?c)????//定義終結符?
{
??if(c>=‘a‘&&c<=‘z‘)
????return?1;
????else?return?0;
}
void?Ganalyze(FILE?*f)??//文法分析?
{
??? char?ch;
??? char?*fh;
????int?mn;
????int?str;
????int?hflag=-1;
????char?x1[50]={‘?‘}x2[50]={‘?‘}xp[50]={‘?‘};
????char?*temp1*temp2*
- 上一篇:C++ 一個用api封裝的串口類
- 下一篇:VC++組播通信源碼
評論
共有 條評論