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

📄 scanner.h

📁 构造词法分析器和语法分析器进行绘图
💻 H
字号:

#ifdef SCANNER_H
#define SCANNER_H
#include"iostream"
#include"string.h"
#include"stdlib.h"
#include"ctype.h"
#include"stdarg.h"
#include"math.h"
using namespace std;


//记号的分类与表示
enum Token_Type
{
    ORIGIN,SCALE,ROT,IS,
    TO,STEP,DRAW,FOR,FROM,
	T,
	SEMICO,L_BRACKET,R_BRACKET,COMMA,
	PLUS,MINUS,MUL,DIV,POWER,
	FUNC,
	CONST_ID,
    NONTOKEN,
	ERRTOKEN
};
typedef double (*MathFuncPtr)(double);
//记号的数据结构
 struct Token 
{
    Token_Type type;
	char * lexeme;
	double value;
    double (*FuncPtr)(double);
};
//字典
static Token TokenTab[] =
{	{CONST_ID,	"PI",		3.1415926,	NULL},
	{CONST_ID,	"E",		2.71828,	NULL},
	{T,         "T",        0.0,        NULL},
    {FUNC,		"SIN",		0.0,		sin},
	{FUNC,		"COS",		0.0,		cos},
	{FUNC,		"TAN",		0.0,        tan},
	{FUNC,		"LN",		0.0,		log},
	{FUNC,		"EXP",		0.0,		exp},
	{FUNC,		"SQRT",		0.0,		sqrt},

	{ORIGIN,	"ORIGIN",	0.0,		NULL},
	{SCALE,		"SCALE",	0.0,		NULL},
	{ROT,		"ROT",		0.0,		NULL},
	{IS,		"IS",		0.0,		NULL},
	{FOR,		"FOR",		0.0,		NULL},
	{FROM,		"FROM",		0.0,		NULL},
	{TO,		"TO",		0.0,		NULL},
	{STEP,		"STEP",		0.0,		NULL},
	{DRAW,		"DRAW",		0.0,		NULL}
};


extern unsigned int LineNo;
extern int InitScanner(const char*);
extern Token GetToken(void);
extern void CloseScanner(void);

#endif

/*#define TOKEN_LEN 100	
unsigned int LineNo;
static FILE*InFile;

static char TokenBuffer[TOKEN_LEN];*/

⌨️ 快捷键说明

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