📄 maincode.cpp
字号:
#include <iostream>
#include <string>
#include <stack>
using namespace std;
string s;
string::size_type i = 0;
stack<char> SEM;
stack<char> SYN;
int j = 0;
char syn = ' ';
char sem0 = ' ';
char sem1 = ' ';
void e();
char newtemp[10] = {'0','1','2','3','4','5','6','7','8','9'};
struct temp
{
char syn;
char sem0;
char sem1;
char str;
};
struct temp qt[10];
void read()
{
i++;
}
void quat()
{
syn = SYN.top();
sem1 = SEM.top();
qt[j].syn = SYN.top();
qt[j].sem1 = SEM.top();
SEM.pop();
qt[j].sem0 = SEM.top();
qt[j].str = newtemp[j];
SYN.pop();
SEM.pop();
SEM.push(newtemp[j]);
j++;
}
void f()
{
if(s[i] == '(')
{
read();
e();
if(s[i] == ')')
{
read();
}
else
cout << "f_err0" << endl;
}
else
{
if(s[i] <= 'z' && s[i] >= 'a')
{
SEM.push(s[i]);
read();
}
else
cout << "f_err1" << endl;
}
}
void t()
{
bool t_falg = true;
f();
while(t_falg)
{
if(s[i] == '*' || s[i] == '/')
{
SYN.push(s[i]);
read();
f();
quat();
}
else
t_falg = false;
}
}
void e()
{
bool e_falg = true;
t();
while(e_falg)
{
if(s[i] == '+' || s[i] == '-')
{
SYN.push(s[i]);
read();
t();
quat();
}
else
e_falg = false;
}
}
void main()
{
cout << "请输入字符串: " << endl;
cin >> s;
e();
if(s[i] == '#')
{
for(i = 0; i < j; i++)
{
cout << "(" << qt[i].syn << " " << qt[i].sem0 << " "
<< qt[i].sem1 << " " << qt[i].str << ")" << endl;
}
}
else
cout << "z_err" << endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -