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

📄 scanner.h

📁 用VC做的一个简单编译器.实现简单的画图
💻 H
字号:

// ----------------------------- scanner.h ---------------------------------
#ifndef SCANNER_H
#define SCANNER_H

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdarg.h>
#include <math.h>

enum Token_Type								// 记号种类
{
	ORIGIN, SCALE, ROT, IS,   TO,			// 保留字
	STEP,   DRAW,  FOR,	FROM,				// 保留字
	COLOR,	RED,   BLUE,BLACK,   		    // 保留字, 颜色的设置
	GREEN,
	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},
    {COLOR,     "COLOR",    0.0,        NULL},
	{RED,       "RED",      0.0,        NULL},
	{BLUE,      "BLUE",     0.0,        NULL},
	{BLACK,     "BLACK",    0.0,        NULL},
	{GREEN,     "GREEN",    0.0,        NULL}
};

extern unsigned int LineNo ;				// 跟踪记号所在源文件行号
extern int InitScanner (const char *);		// 初始化词法分析器
extern Token GetToken (void);				// 获取记号函数
extern void CloseScanner (void);			// 关闭词法分析器

#endif

⌨️ 快捷键说明

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