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

📄 cifa.h

📁 词法分析程序
💻 H
字号:
/****************************************************/
/* 文件: Cifa.h		                                */
/*词法分析器										*/
/*作者:赖荣凤		02282021						*/
/*2004年10月30日									*/
/****************************************************/
// Cifa.h: interface for the CCifa class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CIFA_H__EE1B915F_7E82_46EC_B52E_9C6AF70F20B4__INCLUDED_)
#define AFX_CIFA_H__EE1B915F_7E82_46EC_B52E_9C6AF70F20B4__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/*
#define NOTICE 1
/*以下是读文件时的状态*/
/*#define MYEOF 200
#define READING 201

#define NULLSY 0
#define IFSY	1//if
#define ELSESY	2//else
#define WHILESY	3//while
#define RETURNSY	4//return
#define MAINSY	5//main
#define FORSY	6//for
#define FALSESY 7//false
#define TURESY 8//ture
#define INTSY 9//int


#define IDSY	20//标识符
#define	VOIDSY	21//void
#define DIGITSY 22//数字
#define	PLUSSY 23// +
#define MINUSSY	24// -
#define STARSY	25// *
#define DIVISY	26// /
#define LPARSY	27//(
#define RPARSY	28//)
#define COMMASY	29//,
#define SEMISY	30//;
#define ASSIGNSY	31//=
#define EQUSY	32//==
#define LESSSY	33//<
#define LESSEQUSY	34//<=
#define GREATSY	35//>
#define	GREATEQUSY	36//>=
#define UNEQUSY	37//!=
#define LMPARSY 38//[
#define RMPARSY 39//]
#define LBPARSY 40//{
#define RBPARSY 41//}
#define ORSY	42//||
#define ANDSY 43//&&
#define NOTSY 44//!
//.#define DOTST 45//.
#define ADDADDSY 46//++
#define	SUBSUBSY 47//--
#define INPUTSY 48//>>
#define OUTPUTSY	49//<<
#define CSTRINGSY	50//字符串*/

#include "Error.h"

typedef struct
{
	int tokentype;
	char *pchar;
}TOKEN;

class Cifa
{
protected:
	Error* theError;
	CEdit* theEdit;//源程序所在控件
	int line_no;//行号
	char pchar;//待分析字符
	char buf[201];//从文件中读出一行程序段
	int lenth;//从文件中读出的程序段长
	int current;//当前分析字符在line中的位置
	char token[50];//词法分析的 短语
	int token_lenth;
	void GetChar(void);//读下一字符
	int GetNBC(void);//每次调用检查pchar是否为空,若为空反复调用GetChar直至不为空
	void Cat(void);//把*pchar 与token 相连接
	int Letter(void);//判断*pchar中的字符是否为字母
	int Digit(void);//判断*pchar中的字符是否为数字
//	void Retract(void);//退回一格
	int Reserve(void);//查关键字
//	int strtoint(void);//将token中的数字串转化为数值
	void MyError(int type,int lineno);//错误处理
public:
	Cifa(CEdit* MyEdit,Error* MyError);
	~Cifa(void);
	int GetNextToken(TOKEN *t);//获取下一个token的类型和值
	int GetLineNO();
};

#endif // !defined(AFX_CIFA_H__EE1B915F_7E82_46EC_B52E_9C6AF70F20B4__INCLUDED_)

⌨️ 快捷键说明

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