📄 a.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <iostream.h>
#define MaxSize 50
void Advance(int & p)//过程 ADVANCE
{
p++;
}
char Sym(char ST[],int p)//函数过程 SYM
{
return ST[p];
}
void E(char ST[],bool & TZ,int & p);
void F(char ST[],bool & TZ,int & p)//F过程
{
char sym=Sym(ST,p);
if(sym>='A' && sym<='Z')
Advance(p);
else
{
if(sym!='(')
{
cout << "ERROR!" << endl;
TZ=1;
}
else
{
Advance(p);
E(ST,TZ,p);
if(Sym(ST,p)!=')')
{
cout << "ERROR!" << endl;
TZ=1;
}
else Advance(p);
}
}
}
void T(char ST[],bool & TZ,int & p)//T过程
{
F(ST,TZ,p);
char sym;
while(true)
{
sym=Sym(ST,p);
if(sym=='*' || sym=='/')
{
Advance(p);
F(ST,TZ,p);
}
else break;
}
}
void E(char ST[],bool & SZ,int & p)//E过程
{
char sym;
while(true)
{
T(ST,SZ,p);
sym=Sym(ST,p);
if(sym=='+' || sym=='-')
Advance(p);
else break;
}
}
void main()
{
bool TZ = false;
int p;
char ST[MaxSize];
while(true)//zc过程
{
printf("***************************语法分析器*************************\n\n\n");
printf("INPUT EXPRESSION:");
cin >> ST;
p=0;
E(ST,TZ,p);
if(Sym(ST,p)!='#' || TZ==true)
cout << "ERROR, AGAIN!" << endl;
else
{
cout << "RIGHT, AGAIN!" << endl;
TZ=false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -