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

📄 scan.h

📁 自己做的一个简单的C词法分析器
💻 H
字号:
// scan.h: interface for the scan class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SCAN_H__81332AC9_0069_4026_BEA9_20CFB9111DA6__INCLUDED_)
#define AFX_SCAN_H__81332AC9_0069_4026_BEA9_20CFB9111DA6__INCLUDED_

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

class scan  
{
public:
	scan();
	virtual ~scan();
	CString Analyze(CString s,int row,int count);
public:
	void Error(char ch);
	CString AddWordTable();
	int ErrNum();
	bool IsInWordTable(CString word,unsigned &p);
	void AddToken(CString s,int word,int num);
	bool IsIdent(char ch);
	bool IsKeyword(CString word,int &token);
	bool IsNumber(char ch);
	bool IsLetter(char ch);
	void Sort(char ch);
	void Recogdel(char ch);
	void Recogstr(char ch);
	void Recogdig(char ch);
	void Recogid(char ch);
	void Handlecom(char ch);
	void LookUp(CString word,int kind,unsigned &entry);
	char ScanNextChar();
	CString strtoken;		//返回token
	CString addwordtable;	//返回符号表信息
	CString err;			//返回错误信息
	int errnum;				//返回错误个数
private:
	int row;		//行计数器
	int col;		//列计数器
	int count;		//行总数
	char buf[100];	//待处理的一行数据的缓存

	//Token结构
	typedef struct _token
	{
		int  word;	
		int	 num;	
	}Token,*lpToken;

	//符号表
	typedef struct _wordtable
	{
		unsigned  start;//起始位置
		unsigned  len;//单词长度
		CString   type;//类型
		CString   kind;//种类
		CString	  val;//值
	}WordTable,*lpWordTable;
	
	//字符串表
	typedef struct _strtable
	{
		unsigned point;
		char strtabe[1000];	
	}strtable,*lpstrtable;
	
	//保存符号表信息
	WordTable m_wt[100]; 
	unsigned p_wt;	//
	
	//保存字符串表信息
	strtable m_st;
	int	wordtablenum;//符号表中单词的计数器
};


#endif // !defined(AFX_SCAN_H__81332AC9_0069_4026_BEA9_20CFB9111DA6__INCLUDED_)

⌨️ 快捷键说明

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