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

📄 symbol_mapping.cpp

📁 一门课程的proj
💻 CPP
字号:
#include "StdAfx.h"
#include ".\symbol_mapping.h"

symbol_map_item::symbol_map_item(void){}

symbol_map_item::symbol_map_item(const string &symbol_name, int symbol_num)
{
	this->name = symbol_name;
	this->num = symbol_num;
}

void symbol_map_item::set(const string &input_name, int input_num)
{
	name = input_name;
	num = input_num;
}

symbol_mapping::symbol_mapping(void)
{
	sm.push_back( *new symbol_map_item("PROGRAM", 1401) );
	sm.push_back( *new symbol_map_item("BEGIN", 1402) );
	sm.push_back( *new symbol_map_item("END", 1403) );
	sm.push_back( *new symbol_map_item("CONST", 1404) );
	sm.push_back( *new symbol_map_item("INTEGER", 1405) );
	sm.push_back( *new symbol_map_item("REAL", 1406) );
	sm.push_back( *new symbol_map_item("BOOLEAN", 1407) );
	sm.push_back( *new symbol_map_item("ARRAY", 1408) );
	sm.push_back( *new symbol_map_item("IF", 1409) );
	sm.push_back( *new symbol_map_item("THEN", 1410) );
	sm.push_back( *new symbol_map_item("ELSE", 1411) );
	sm.push_back( *new symbol_map_item("WHILE", 1412) );
	sm.push_back( *new symbol_map_item("DO", 1413) );
	sm.push_back( *new symbol_map_item("REPEAT", 1414) );
	sm.push_back( *new symbol_map_item("UNTIL", 1415) );
	sm.push_back( *new symbol_map_item("FOR", 1416) );
	sm.push_back( *new symbol_map_item("TO", 1417) );
	sm.push_back( *new symbol_map_item("READ", 1418) );
	sm.push_back( *new symbol_map_item("WRITE", 1419) );
	sm.push_back( *new symbol_map_item("END.", 1420) );
	sm.push_back( *new symbol_map_item("FUNCTION", 1421) );
	sm.push_back( *new symbol_map_item("+", 401) );
	sm.push_back( *new symbol_map_item("-", 402) );
	sm.push_back( *new symbol_map_item("*", 403) );
	sm.push_back( *new symbol_map_item("/", 404) );
	sm.push_back( *new symbol_map_item("<", 501) );
	sm.push_back( *new symbol_map_item("<=", 502) );
	sm.push_back( *new symbol_map_item(">", 503) );
	sm.push_back( *new symbol_map_item(">=", 504) );
	sm.push_back( *new symbol_map_item("=", 505) );
	sm.push_back( *new symbol_map_item("<>", 506));
	sm.push_back( *new symbol_map_item("AND", 601) );
	sm.push_back( *new symbol_map_item("OR", 602) );
	sm.push_back( *new symbol_map_item("NOT", 603) );
	sm.push_back( *new symbol_map_item("$ID", 700) );
	sm.push_back( *new symbol_map_item("(", 800) );
	sm.push_back( *new symbol_map_item(")", 900) );
	sm.push_back( *new symbol_map_item("[", 1000) );
	sm.push_back( *new symbol_map_item("]", 1100) );
	sm.push_back( *new symbol_map_item("{", 1200) );
	sm.push_back( *new symbol_map_item("}", 1300) );
	sm.push_back( *new symbol_map_item("$INT", 100) );
	sm.push_back( *new symbol_map_item("$REAL", 200) );
	sm.push_back( *new symbol_map_item("TRUE", 301) );
	sm.push_back( *new symbol_map_item("FALSE", 302) );
	sm.push_back( *new symbol_map_item(":=", 1500) );
	sm.push_back( *new symbol_map_item(";", 1600) );
	sm.push_back( *new symbol_map_item(",", 1700) );
	sm.push_back( *new symbol_map_item(":", 1800) );
	sm.push_back( *new symbol_map_item("$INTOVER", 1900) );
	sm.push_back( *new symbol_map_item("#", 2000) );
	sm.push_back( *new symbol_map_item("e", -1));
	sm.push_back( *new symbol_map_item("S0", 0) );
	sm.push_back( *new symbol_map_item("S1", 1) );
	sm.push_back( *new symbol_map_item("S2", 2) );
	sm.push_back( *new symbol_map_item("S3", 3) );
	sm.push_back( *new symbol_map_item("S4", 4) );
	sm.push_back( *new symbol_map_item("S5", 5) );
	sm.push_back( *new symbol_map_item("S6", 6) );
	sm.push_back( *new symbol_map_item("S7", 7) );
	sm.push_back( *new symbol_map_item("S8", 8) );
	sm.push_back( *new symbol_map_item("S9", 9) );
	sm.push_back( *new symbol_map_item("S10", 10) );
	sm.push_back( *new symbol_map_item("S11", 11) );
	sm.push_back( *new symbol_map_item("S12", 12) );
	sm.push_back( *new symbol_map_item("S13", 13) );
	sm.push_back( *new symbol_map_item("S14", 14) );
	sm.push_back( *new symbol_map_item("S15", 15) );
	sm.push_back( *new symbol_map_item("S16", 16) );
	sm.push_back( *new symbol_map_item("S17", 17) );
	sm.push_back( *new symbol_map_item("S18", 18) );
	sm.push_back( *new symbol_map_item("S19", 19) );
	sm.push_back( *new symbol_map_item("S20", 20) );
	sm.push_back( *new symbol_map_item("S21", 21) );
}

int symbol_mapping::getInt(string &input_name)
{
	vector<symbol_map_item>::iterator temp;
	for( temp = sm.begin() ; temp != sm.end() ; temp++)
		if( (*temp).name.compare(input_name) == 0)
			return (*temp).num;
	return -1;
}
string symbol_mapping::getName(int input_num)
{
	vector<symbol_map_item>::iterator temp;
	for( temp = sm.begin() ; temp != sm.end() ; temp++)
		if( (*temp).num == input_num)
			return (*temp).name;
}

⌨️ 快捷键说明

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