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

📄 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>
#include<memory.h>
#include <iostream>
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

⌨️ 快捷键说明

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