⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a.cpp

📁 用递归下降法分析算术表达式的框图
💻 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 + -