云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 编译原理-LL(1)文法源代码(实验三)

编译原理-LL(1)文法源代码(实验三)

  • 62 次阅读
  • 3 次下载
  • 2025/5/6 9:42:37

printf(\步骤\\t分析符号栈\\t当前指示字符\\t使用产生式序号\\n\

step = 0; current = 0;

printf(\ ShowStack();

printf(\

while('#' != st[current]) {

if(100 > analyseStack[topAnalyse]) {

if(analyseStack[topAnalyse] == IndexCh(st[current])) {

Pop(); current++; step++;

printf(\ ShowStack();

printf(\出栈、后移\\n\ } else {

printf(\不匹配!\ printf(\此串不是此文法的句子!\\n\ return; } }

else /*当为非终结符时*/ {

r = analyseTable[analyseStack[topAnalyse] - 100][IndexCh(st[current])]; if(-1 != r) {

Push(r); step++;

printf(\ ShowStack();

printf(\ } else {

printf(\此串不是此文法的句子!\\n\ return;

} } }

if('#' == st[current]) {

if(0 == topAnalyse && '#' == st[current]) {

step++;

printf(\ ShowStack();

printf(\分析成功!\\n\ printf(\是给定文法的句子!\\n\ } else {

while(topAnalyse > 0) {

if(100 > analyseStack[topAnalyse]) {

printf(\此串不是此文法的句子!\\n\ return; } else {

r = analyseTable[analyseStack[topAnalyse] - 100][vtNum]; if(-1 != r) {

Push(r); /*产生式右部代替左部,指示器不移动*/ step++;

printf(\ ShowStack();

if(0 == topAnalyse && '#' == st[current]) {

printf(\分析成功!\\n\ printf(\是给定文法的句子!\\n\ }

else

printf(\ } else {

printf(\此串不是此文法的句子!\\n\ return;

} } } } } }

/*初始化栈及符号串*/ void InitStack() { int i;

/*分析栈的初始化*/

for(i = 0; i < MaxStLength; i++) st[i] = '\\0';

analyseStack[0] = -1; /*#(-1)入栈*/ analyseStack[1] = 100; /*初始符入栈*/ topAnalyse = 1; }

/*显示符号栈中内容*/ void ShowStack() { int i;

for(i = 0; i <= topAnalyse; i++) {

if(100 <= analyseStack[i])

printf(\ else {

if(-1 != analyseStack[i])

printf(\ else

printf(\ } } }

/*栈顶出栈*/ void Pop() {

topAnalyse--; }

void Push(int r) { int i;

struct pRNode *pt; Pop();

pt = P[r].rHead;

if(-1 == pt->rCursor) return;

topAnalyse += P[r].rLength; for(i = 0; i < P[r].rLength; i++) {

analyseStack[topAnalyse - i] = pt->rCursor;/*逆序入栈*/ pt = pt->next; } }

搜索更多关于: 编译原理-LL(1)文法源代码(实验三) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

printf(\步骤\\t分析符号栈\\t当前指示字符\\t使用产生式序号\\n\ step = 0; current = 0; printf(\ ShowStack(); printf(\ while('#' != st[current]) { if(100 > analyseStack[topAnalyse]) { if(analyseStack[topAnalyse] == IndexCh(st[current])) { Pop(); current++; step++; printf(\ ShowStack(); printf(\出栈、后移\\n\ }

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com