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

📄 grammar.h

📁 一个用VC++写的算符优先分析程序
💻 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 + -