📄 compiler.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 + -