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

📄 scanner.h

📁 一个采用面向对象实现编译解释器,自己验证过绝对能用.
💻 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,
	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

⌨️ 快捷键说明

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