📄 myhead.h
字号:
//////////////////////////////////////////////////////////////////////////
#include <string>
using namespace std;
//辅助输入函数////////////////////////////////////////////////////////////////////////
string getch_blank(); //包括空格的字符串输入
//单词编码////////////////////////////////////////////////////////////////////////
const string keywords[60]={"and","array","begin","bool","call","case","char","constant","dim",
"do","else","end","false","for","if","input","integer","not","of",
"or","output","procedure","program","read","real","repeat","set",
"stop","then","to","true","until","var","while","write","标志符",
"整数","字符常数","(",")","*","*/","+",",","-",".","..","/","/*",
":",":=",";","<","<=","<>","=",">",">=","[","]"};
//单词链////////////////////////////////////////////////////////////////////////
struct word_chain //单词链,把测试文件里面的每个元素区分开后,存放在单词链中
{
string word; //单词内容
int attribute; //属性,即该单词是属于什么单词编码
int order; //是标志符,整数或者字符常数的标志出现的次序,否则为0
word_chain *next;
};
//标志符,整数,字符串链表(以便查看)///////////////////////////////////////////////////////
struct symbol_chain
{
word_chain *symbol_word; //存放文中标志符,整数或者字符串常数的指针
symbol_chain *next;
};
//编译器类定义////////////////////////////////////////////////////////////////////////
class sample
{
public:
sample(); //包含前期工作
~sample(); //后期工作
bool analyze_words_text(); //词法分析函数,通过返回TRUE,否则返回FALSE
void show_analyze_text(); //词法分析通过之后显示单词的二元式序列
protected:
/*以下是为词法分析函数做准备的一些内部函数*/
word_chain* add_word(word_chain*head); //往单词链中添加单词,不包括注释
//同时返回单词链中该单词的指针
int point_word(string word); // 判断单词在文中出现的位置,返回0代表该标志符在前面没有出现过
//否则,返回该标志符在前面出现的位置
void add_symbol(word_chain*);//往标志符链中添加元素
string separate_word(string words_line,int&point); //分离单词函数
int analyze_word(string word); // 分析单个单词,返回一个代表分析结果的数
// 0 代表合法的注释,-1 代表非法字符
// -2 代表字符常数缺右边的单引号,-3 代表注释部分缺右边的界符*/
// 1~60代表合法并且返回其单词编码
/*以下是为语法分析函数做准备的一些内部函数*/
private:
string filename; //文件名
word_chain *text; //单词链,包含程序中除了注释以外的所有单词
symbol_chain *symbol; //用于标记文中标志符,整数或者字符串常数的位置
int symbol_number; // 用于记录文中标志符,整数或者字符串常数的个数
int error; //用于记录程序中错误的个数
int warning; //用于记录程序中警告的个数
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -