电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

LL1语法分析c++实现-first集-follow集-分析表-分析栈

LL1语法分析c++实现-first集-follow集-分析表-分析栈_第1页
1/22
LL1语法分析c++实现-first集-follow集-分析表-分析栈_第2页
2/22
LL1语法分析c++实现-first集-follow集-分析表-分析栈_第3页
3/22
//LL(1)文法(源代码)#include "stdio.h"#include "stdlib.h"#define MaxRuleNum 8#define MaxVnNum 5#define MaxVtNum 5#define MaxStackDepth 20#define MaxPLength 20#define MaxStLength 50struct pRNode /*产生式右部结构*/{ int rCursor; struct pRNode *next;};struct pNode { int lCursor; int rLength; /*右部长度*/ struct pRNode *rHead; /*右部结点头指针*/};char Vn[MaxVnNum + 1]; /*非终结符集*/int vnNum;char Vt[MaxVtNum + 1]; /*终结符集*/int vtNum;struct pNode P[MaxRuleNum]; int PNum; char buffer[MaxPLength + 1];char ch; char st[MaxStLength]; /*要分析的符号串*/struct collectNode { int nVt; struct collectNode *next;};struct collectNode* first[MaxVnNum + 1]; /*first 集*/struct collectNode* follow[MaxVnNum + 1]; /*follow 集*/int analyseTable[MaxVnNum + 1][MaxVtNum + 1 + 1];int analyseStack[MaxStackDepth + 1]; /*分析栈*/int topAnalyse; /*分析栈顶*/void Init();/*初始化*/int IndexCh(char ch);void InputVt(); /*输入终结符*/void InputVn();/*输入非终结符*/void ShowChArray(char* collect, int num);/*输出 Vn 或 Vt 的内容*/void InputP();/*产生式输入*/bool CheckP(char * st);/*推断产生式正确性*/void First(int U);void AddFirst(int U, int nCh); /*加入 first 集*/bool HaveEmpty(int nVn); void Follow(int V);/*计算 follow 集*/void AddFollow(int V, int nCh, int kind);void ShowCollect(struct collectNode **collect);/*输出 first 或 follow 集*/void FirstFollow();/*计算 first 和 follow*/void CreateAT();/*构造预测分析表*/void ShowAT();/*输出分析表*/void Identify(char *st);void InitStack();void ShowStack();void Pop();void Push(int r);int main(){ char todo,ch; Init(); InputVn(); InputVt(); InputP(); getchar(); FirstFollow(); printf("所得 first 集为:"); ShowCollect(first); printf("所得 follow 集为:"); ShowCollect(follow); CreateAT(); ShowAT(); todo = 'y'; while('y' == todo) { printf("\n 是否继续进行句型分析?(y / n):"); todo = g...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

LL1语法分析c++实现-first集-follow集-分析表-分析栈

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部