lexanalyzer.h

来自「mips处理器指令仿真器」· C头文件 代码 · 共 61 行

H
61
字号
#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 + =
减小字号Ctrl + -
显示快捷键?