syntaxanalyse.h

来自「此源代码是用VC++编写的」· C头文件 代码 · 共 89 行

H
89
字号

#include "WordAnalyse.h"



class SyntaxAnalyse
{
	bool bResult;
	int WordIndex;
public:
	SyntaxAnalyse() {bResult = true;  WordIndex = 0;}
	bool Analyse(WordAnalyse* pWords);
protected:
	void E(WordAnalyse* pWords);
	void E_(WordAnalyse* pWords);
//	void N(WordAnalyse* pWords);
};

bool SyntaxAnalyse::Analyse(WordAnalyse* pWords)
{
	if(pWords->GetResult() == false)
		return false;
	E(pWords);
	if( WordIndex < pWords->GetWordNum() - 1)
	{
			bResult = true;
			WordIndex = 0;
			return false;
	}
	bool tem = bResult;
	bResult = true;
	WordIndex = 0;
	return tem;

}

void SyntaxAnalyse::E(WordAnalyse* pWords)
{
	
	if(strcmp(pWords->GetWord(WordIndex),"(") == 0)
	{
		WordIndex++;
		E(pWords);
		if(strcmp(pWords->GetWord(WordIndex),")") == 0)
		{
			WordIndex++;
			E_(pWords);
		}
		else
		{
			bResult = false;
			return;
		}
		
	}
	else
		if(pWords->GetWordAttribute(WordIndex) != 2)
		{
			WordIndex++;
			E_(pWords);
		}
		else
		{
			bResult = false;
			return;
		}
}


void SyntaxAnalyse::E_(WordAnalyse* pWords)
{
	//char tem[100] = "\0";
//	strcpy(tem,Words.GetWord(WordIndex));
//	char Operator = tem[0];
	if(strcmp(pWords->GetWord(WordIndex),"+") == 0 ||
		strcmp(pWords->GetWord(WordIndex),"-") == 0 ||
		strcmp(pWords->GetWord(WordIndex),"*") == 0 ||
		strcmp(pWords->GetWord(WordIndex),"/") == 0 
		)
	{
		WordIndex++;
		E(pWords);
		E_(pWords);
	}
	else
		return;
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?