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

📄 liblexic.h

📁 lex语法分析
💻 H
字号:
// LibLexic.h: interface for the CLibLexic class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LIBLEXIC_H__AB89B026_E44E_11D8_B464_0000E8E7E526__INCLUDED_)
#define AFX_LIBLEXIC_H__AB89B026_E44E_11D8_B464_0000E8E7E526__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <string>
#include <vector>
#define  WORDLEN   31
//注意这个和CLexBTree中的一致
using namespace std;


struct SWordTag{
	unsigned int  nTag;
	// 注意tag是从 1 开始编号的,因为这样可以和
	// CLexBTree中的ClearCell一致
	char cstrWord[WORDLEN+1];
};
class CLibLexic  
{
public:
	CLibLexic();
	virtual ~CLibLexic();
protected:
	bool FitPattern    (string strWord,string& strPattern);
	bool FitPatternEx  (string strWord,string& strPattern);
	bool FitPatternExEx(string strTemp,string& strPattern);
	bool NumeralDigits (string strWord);
	bool NumeralFloat  (string strWord);
	bool NumeralInteger(string strWord);
	bool PatternNumeral(string strNum,string& strNumPat);
	bool PatternAlphas (string str);
	bool PatternAD     (string strWord,string& strPattern);
	bool PatternDD     (string strWord,string& strPattern);
	bool PatternDA     (string strWord,string& strPattern);	
	bool PatternIS     (string strWord,string& strPattern);
	bool PatternLSR    (string strWord,string& strPattern);

	bool IsVerbose(string strWord);
	bool IsMalform(string strWord);
	bool IsPureDigits(string str);

	bool IsSentence(string str);
	void Normalize(string str);

	void RecordTagWords(string strTag,string strWords);

	void PartitionWords(string strWords,vector<string>& vecWords);
	void TrimWord(string& strWord);
	bool TrimAndTell(string &strWord);
	
	void ToLower(string &str);
	unsigned int ReplaceTagStrByInt(string strTag);
protected:
	enum {
		STATE_S_A ,
		STATE_S_B ,
	 	STATE_S_C ,
	 	STATE_S_D ,
		STATE_S_E ,
		STATE_S_0 ,
		STATE_S_1 ,
	 	STATE_S_2 ,
	 	STATE_S_3 ,
	 	STATE_S_4 ,
	 	STATE_S_5 ,
		STATE_S_6 ,
	 	STATE_S_7 ,
	 	STATE_S_8 ,
	 	STATE_S_9 
	 	};	

public:
	bool Analyse(string str);
	vector<SWordTag> m_vecWordTag;
	string m_strLine;	
	int   m_aryAllWordTagNum[62];
	int   m_aryRecWordTagNum[62];
	int   m_aryTagLattice[62][62];
	int   m_nPreTag;
};

#endif // !defined(AFX_LIBLEXIC_H__AB89B026_E44E_11D8_B464_0000E8E7E526__INCLUDED_)

⌨️ 快捷键说明

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