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

📄 parsing.h

📁 1. 先打开规则库
💻 H
字号:
// parsing.h 自动句法分析所需要的数据结构,包括规则,局部分析等

class CRule:public CObject
{
public:
	CString Ls,Rs1,Rs2;
	CRule() {
	}
	CRule(CString Line);
};

class CEdge:public CObject
{
public:
	CString Root;
	int First,Last,Sub1,Sub2,WordNumber;
	CEdge() {}
	CEdge(CString wt,int wid);
	CEdge(CEdge *p, int pid, CString r);
	CEdge(CEdge *p1,CEdge *p2,int pid1,int pid2,CString r);
	CString GetRoot() {
		int i=Root.Find('(');
		if(i<0)
			return Root;
		else
			return Root.Left(i);
	}
};

// Bottom-up分析需要用到的函数

CString Parsing(CString s); // 分析一个句子
void Expanding(); // 根据规则增加局部分析
BOOL GetRule(CString &ls,CString rs1, CString rs2=""); // 查找规则
CString GetTrees(int wid); // 返回若干个分析树
CString GetOneTree(CEdge *e); // 返回一个局部分析所代表的子树

// 概率语法类
class CProbRule:public CRule
{
public:
	double Prob,DesireCount; // 规则概率,期望次数
	CProbRule(CString Line); // 构造函数
};

class CProbEdge:public CEdge
{
public:
	int RuleId;
	CString Parent;
	double InsideProb,InProbAddUp,OutsideProb;
	CProbEdge(CString wt, int wid):CEdge(wt,wid) {
		InsideProb=InProbAddUp=1.0;
		RuleId=-1;
		OutsideProb=0.0;
		Parent="";
	}
	CProbEdge(CProbEdge *p,int pid,int Rid);
	CProbEdge(CProbEdge *p1,CProbEdge *p2,int pid1,int pid2,int Rid);
};

// 概率CFG分析需要的函数

CString ProbParsing(CString s, double & sProb);
int GetProbRule(CString rs1,CString rs2="");
void GetRuleNewProb();
void InsertEdges(int first, int last);
void GetOutsideProb(int wn);
void GetDesireCount(double sProb);
CString GetProbTrees(int wn);
CString GetOneProbTree(CProbEdge *e);

⌨️ 快捷键说明

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