c语言实现算符优先语法分析Word文件下载.doc
- 文档编号:13160590
- 上传时间:2022-10-07
- 格式:DOC
- 页数:5
- 大小:19.50KB
c语言实现算符优先语法分析Word文件下载.doc
《c语言实现算符优先语法分析Word文件下载.doc》由会员分享,可在线阅读,更多相关《c语言实现算符优先语法分析Word文件下载.doc(5页珍藏版)》请在冰豆网上搜索。
{
zhan[z++]=ch;
}
voidpop()//出栈
z--;
voidputzhan()//打印栈内字符
for(inti=0;
i<
z;
i++)
{
printf("
%c"
zhan[i]);
}
printf("
\t"
);
intputzhong()//打印数组中剩余字符
inti=j;
do
zhongjian[i]);
}while(zhongjian[i++]!
='
#'
i-=2;
returni;
charding()//获取栈顶元素,无视E
chara;
q=z-1;
a=zhan[q--];
}while(a=='
E'
returna;
charding2()//获取栈顶元素
a=zhan[q];
intfindint(charch)/*将字符转为数字,以得到算符优先值*/
{
intt;
switch(ch)
{
case'
+'
:
t=0;
break;
-'
t=1;
*'
t=2;
/'
t=3;
('
t=4;
)'
t=5;
i'
t=6;
t=7;
}
returnt;
voidchu()//初始化
zhan[0]='
;
z=1;
c=0;
j=0;
syn=0;
zh=ding();
ch=zhongjian[j];
voidanalyse()//分析
while(zh!
='
||ch!
)
putzhan();
d=putzhong();
a=findint(zh);
b=findint(ch);
if(table[a][b]==-1)
{
push(ch);
j++;
printf("
移进\n"
}
elseif(table[a][b]==1)
for(intm=d;
m>
=j;
m--)
{
shu[c++]=zhongjian[m];
}
for(inti=z-1;
i>
0;
i--)
shu[c++]=zhan[i];
zh=ding2();
if(zh=='
)//当前比较为i,出栈一次
pop();
else//当前比较不为i,出栈三次
push('
//归约到E
归约\n"
shu[c++]='
'
>
'
else
syn=-1;
break;
zh=ding();
ch=zhongjian[j];
voidloadch()//读入所有字符串
inti=0;
printf("
请输入要进行算符优先分析的字符串:
\n"
do
{
ch=getchar();
prog[i++]=ch;
}
while(ch!
voidscaner()
syn=1;
ch=prog[p++];
while(ch=='
||ch=='
\n'
ch=prog[p++];
switch(ch)
case'
zhongjian[q++]='
case'
syn=0;
default:
syn=-1;
voidsaomiao()
p=0;
q=0;
scaner();
if(syn==-1)
输入符号有误!
while(syn!
=0);
voidmain()
loadch();
saomiao();
if(syn==0)
chu();
analyse();
#E\t#\t结束\n"
if(syn==0)
该字符串可被文法识别\n"
E"
for(inti=c;
=0;
printf("
shu[i]);
该字符串不可被文法识别\n"
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 优先 语法分析