?? 算符優(yōu)先分析程序.cpp
字號(hào):
#include "stack.h"
#include<string.h>
#include<stdlib.h>
const int maxsize=100;
void main()
{
char str[maxsize];
stack s;
int len;
cout<<"請(qǐng)輸入一個(gè)句型,以#結(jié)束!"<<endl;
cin>>str;
len=int(strlen(str));
s.push('#');
int k=s.getsize()-1,t=0,j;
char a=str[0];
while(a!='#')
{
a=str[t];
if(isvt(s.peek(k)))
j=k;
else
j=k-1;
while(isvt(a)&&getrank(s.peek(j),a)==1)
{
int h=j,low=j-1;
if(!isvt(s.peek(low)))
low--;
while(getrank(s.peek(low),s.peek(h))!=-1)
{
h=low;
low--;
if(!isvt(s.peek(low)))
low--;
}
h=s.getsize()-1;
low++;
int len=h-low+1;
char ch[10];
for(int p=0;p<10;p++)
ch[p]='\0';
s.pop(ch,len);
char c=guiyue(ch);
s.push(c);
cout<<ch<<" 規(guī)約為 "<<guiyue(ch)<<endl;
s.peekall();
j=s.getsize()-1;
if(!isvt(s.peek(j)))
j--;
}
if(!(a>='A'&&a<='Z')&&getrank(s.peek(j),a)==2)
{
cout<<"你的輸入有錯(cuò)誤!"<<endl;
cout<<"錯(cuò)誤為第 "<<t+1<<"個(gè)字符 :"<<str[t]<<endl;
exit(0);
}
else
{
cout<<"讀入 :"<<a<<endl;
s.push(a);s.peekall();
t++;
k=s.getsize()-1;
}
}
char temp[10];
s.pop(temp,3);
if(s.getsize()==0)
cout<<"yes!"<<endl;
else
cout<<"no!"<<endl;
cin>>k;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -