📄 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>
#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 + -