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

📄 compiler.h

📁 一个非常好的词法分析程序,加上语法的分析是一个难得一见的好实例
💻 H
字号:
// Compiler.h: interface for the CCompiler class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_COMPILER_H__8D82FB29_DDC7_4406_ABBC_E161CAF42E96__INCLUDED_)
#define AFX_COMPILER_H__8D82FB29_DDC7_4406_ABBC_E161CAF42E96__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <vector>
#include <fstream>
#include "Define.h"

using namespace std;

//编译类
class CCompiler
{
public:
	CCompiler();
	virtual ~CCompiler();

public:
	void Compile(char *szFile);//编译,公共接口
	vector<SYNTAXERR> GetSyntaxErr(){return m_vectorSyntaxErr;};//得到语法错误

protected:
	bool LexAnalysis(char *szStr);		//词法分析
	bool IsOprSym(char *szStr);			//是否为运算符
	bool IsBndSym(char *szStr);			//是否为界符
	bool IsKeyWord(char *szStr);		//是否为关键字
	bool IsInSymbolTab(char *szStr);    //是否已在符号表中
	char* JumpNoMatterChar(char *szStr);//跳过空格,回车,换行符,Tab

	void OutSymbolTab(char *szFile);//输出符号表到文件

	void SyntaxAnalysis();//语法分析
	void SyntaxAnalysis_Prog();

	bool SyntaxAnalysis_Mop();
	bool SyntaxAnalysis_Integer();
	bool SyntaxAnalysis_Aop();
	bool SyntaxAnalysis_Lop();

	int SyntaxAnalysis_Id();

	int SyntaxAnalysis_Block();
	int SyntaxAnalysis_Body();
	int SyntaxAnalysis_Factor();
	int SyntaxAnalysis_Term();
	int SyntaxAnalysis_Lexp();
	int SyntaxAnalysis_Exp();
	int SyntaxAnalysis_Statement();
	int SyntaxAnalysis_Const();
	int SyntaxAnalysis_Proc();
	int SyntaxAnalysis_Vardecl();
	int SyntaxAnalysis_Condecl();
	
protected:
	int m_iVecotrSymbolSize;//符号表大小
	int m_iCurPointer;      //符号表中当前指针

	vector<LEXPROPERTYVS> m_vectorSymbol;//符号表
	vector<SYNTAXERR> m_vectorSyntaxErr; //语法错误代码
};

#endif // !defined(AFX_COMPILER_H__8D82FB29_DDC7_4406_ABBC_E161CAF42E96__INCLUDED_)

⌨️ 快捷键说明

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