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

📄 shared.h

📁 编译器 用C语言对下述文法和单词表定义的语言设计编制一个编译器
💻 H
字号:
/******************************************************************************
 * shared.h
 *
 * 2008-03-28 20:41
 * 周鑫(zhouxin63766@yahoo.com.cn)
 *
 * 本文件中放置的是公用的数据类型及符号表。
 ******************************************************************************/

#ifndef SHARED_H
#define SHARED_H

#include <cmath>
#include <QString>

enum TokenType
{
	ORIGIN, SCALE, ROT, IS, TO, STEP, DRAW,FOR, FROM,	// 保留字
	T,							// 参数
	SEMICO, LBRACKET, RBRACKET, COMMA,			// 分隔符
	PLUS, MINUS, MUL, DIV, POWER,				// 运算符
	FUNC,							// 函数调用
	CONSTANT,						// 常数
	NONTOKEN,						// 文件结束记号
	ERRTOKEN						// 错误标记
};

const static QString TypeString[] = 
{
	"ORIGIN", "SCALE", "ROT", "IS", "TO",
	"STEP", "DRAW", "FOR", "FROM",
	"T", "SEMICO", "LBRACKET", "RBRACKET", "COMMA",
	"PLUS", "MINUS", "MUL", "DIV", "POWER",		
	"FUNC",
	"CONSTANT",
	"NONTOKEN",
	"ERRTOKEN"
};

// 记号数据结构
struct Token
{
	Token();
	Token( TokenType _type, QString _lexeme,
			double _value, double (*_pFunction)(double) );
	TokenType type;						// 记号类别
	QString lexeme;						// 记号字符串
	double value;						// 常数值
	double ( *pFunction )( double );			// 函数指针
};

#define TABLENGTH 18

const static Token TokenTab[ TABLENGTH ] =
{
	Token(CONSTANT,		QString("PI"),		3.1415926,	NULL),
	Token(CONSTANT,		QString("E"),		2.71828,	NULL),
	Token(T,		QString("T"),		0.0,		NULL),
	Token(FUNC,		QString("SIN"),		0.0,		::sin),
	Token(FUNC,		QString("COS"),		0.0,		::cos),
	Token(FUNC,		QString("TAN"),		0.0,		::tan),
	Token(FUNC,		QString("LN"),		0.0,		::log),
	Token(FUNC,		QString("EXP"),		0.0,		::exp),
	Token(FUNC,		QString("SQRT"),	0.0,		::sqrt),
	Token(ORIGIN,		QString("ORIGIN"),	0.0,		NULL),
	Token(SCALE,		QString("SCALE"),	0.0,		NULL),
	Token(ROT,		QString("ROT"),		0.0,		NULL),
	Token(IS,		QString("IS"),		0.0,		NULL),
	Token(FOR,		QString("FOR"),		0.0,		NULL),
	Token(FROM,		QString("FROM"),	0.0,		NULL),
	Token(TO,		QString("TO"),		0.0,		NULL),
	Token(STEP,		QString("STEP"),	0.0,		NULL),
	Token(DRAW,		QString("DRAW"),	0.0,		NULL)
};

#endif

⌨️ 快捷键说明

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