parsing.h

来自「1. 先打开规则库」· C头文件 代码 · 共 71 行

H
71
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?