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

📄 lexanalyzer.h

📁 一个牛人做的MIPS模拟器
💻 H
字号:
#if !defined(AFX_LEXANALYZER_H__AB6A94C5_5F1E_402E_B185_BECAEE10706F__INCLUDED_)
#define AFX_LEXANALYZER_H__AB6A94C5_5F1E_402E_B185_BECAEE10706F__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// LexAnalyzer.h : header file
//

#include <afxtempl.h>
#include "Tokenizer.h"

#define MAX_KW			100
#define MAX_REGISTER	32

enum ASMKey
{
	LW, SW,
	ADD, SUB, MUT, MUL, DIV,
	AND, OR, XOR,
	ADDI, SUBI, MUTI, MULI, DIVI,
	ANDI, ORI, XORI,
	BEQZ, BNEZ, J, JR, TRAP, NOP,
	COLON, SEPARATOR, SHARP, LEFT_PAR, RIGHT_PAR,
	REGISTER, IDLE_INST, USER, DIGIT, STRING, _EOF
};

struct Lex
{
	ASMKey	key;
	CString	str;
};

class CLexAnalyzer : public CTokenizer
{
public:
	CLexAnalyzer( CString& str );
	virtual ~CLexAnalyzer();

	void	MapKeyword(void);
	void	PushBack();
	Lex&	NextToken();

public:
	// Help routines
	UINT GetRegNum();
	int GetDigit();
	CString GetString();
	BOOL SkipKey( ASMKey key = SEPARATOR );

private:
	BOOL	IsRegister( CString& str );

private:
	BOOL m_bPushedBack;
	struct Lex m_Lex;
	CMap<CString, LPCSTR, ASMKey, ASMKey> m_KeyIndex;
};

#endif // !defined(AFX_LEXANALYZER_H__AB6A94C5_5F1E_402E_B185_BECAEE10706F__INCLUDED_)

⌨️ 快捷键说明

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