.
} } } }
/*初始化栈及符号串*/ 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)
21 / 24'.
.
{ 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; } }
运行结果演示:
22 / 24'.
.
23 / 24'.
.
24 / 24'.