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

📄 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      values;                    //若为常数,则是常数的值
	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 + -