📄 grammar.h
字号:
// grammar.h: interface for the Cgrammar class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GRAMMAR_H__8D755514_D633_4D03_A811_351F417504B2__INCLUDED_)
#define AFX_GRAMMAR_H__8D755514_D633_4D03_A811_351F417504B2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include<string>
#include<vector>
using namespace std;
typedef struct
//class produce
{
//public:
char v_left;
CString v_right;
//friend class Cgrammar;
}produce;
class Cgrammar
{
private:
vector <char> m_Vn; //非终结符
vector <char> m_Vt; //终结符
vector <produce> m_grammar; //产生式/
void getVn(); //得到非终结符
void getVt(); //得到终结符
void getproduce(CString m_edit); //得到完整的产生式
public:
Cgrammar(CString &m_edit);
void display(CString &m_edit);//将产生式输出在文本m_edit中
int getVnsize(); //返回非终结符的总数
int getVtsize();//返回终结符的总数
int getVnsuffix(char m_temp); //返回非终结符m_temp在非终结符集里的序号(从0开始)
int getVtsuffix(char m_temp);//返回终结符m_temp在非终结符集里的序号(从0开始)
void getlist(CListCtrl &m_list); //求得终结符与非终结符的表格头
void getFirstVT(CListCtrl &m_list);//求得FirstVT并放在m_list中
void LastVT(CListCtrl &m_list);//求得LastVT并放在m_list中
void first_table_head(CListCtrl &m_list);
void first_table(CListCtrl &m_list, CListCtrl &m_FirstVT, CListCtrl &m_LastVT, bool symbol = false);
//构造优先表
// void first_table_single(CListCtrl &m_list, CListCtrl &m_FirstVT, CListCtrl &m_LastVT);
void delete_list(CListCtrl &m_list);//清空List里的内容
void add_produce(); //拓展文法
void first_analyse_head(CListCtrl &m_list, CString &m_edit);// 构建算符优先分析过程列表的表头
void first_analyse(CListCtrl &m_analyse, CString &m_edit, CListCtrl &m_list, bool symbol = false);//构建算符优先分析过程列表
void delete_blank(CString &m_edit);// 消除字符串的空格
virtual ~Cgrammar();
};
#endif // !defined(AFX_GRAMMAR_H__8D755514_D633_4D03_A811_351F417504B2__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -