📄 symbol_mapping.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 + -