📄 parsing.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 + -