www.pudn.com > 编译原理LALR(1)文法分析器.zip > Gener.h


/***********************/ 
/*    Gener类的定义    */ 
/***********************/ 
 
#include "Item.h" 
 
class Gener											//产生式的结构体 
{ 
public: 
	int GetRightLength( )							//得到产生式右部的长度 
	{ 
		int count(0); 
		while(1){ 
			if(sentence[count]==END) break; 
			count++; 
			} 
		return count; 
	} 
	void InsertDot(int *array,int len,int pos)		//在指定位置插入'.' 
	{ 
		for(int i=len;i>=pos;i--)					//注意:只能从后往前顺次移动 
			array[i+1]=array[i]; 
		array[pos]=1;								//1是'.'的编码值 
	} 
	void GenToItem(List &list,int len)		//产生式转化为项目 
	{ 
		if(sentence[1]==END&&sentence[0]==0){		//A->$的情况 
			CItem item; 
			item.vn=vn; 
			item.sentence=new int[2]; 
			item.sentence[0]=1; 
			item.sentence[1]=END; 
			list.Insert(item); 
			return; 
		} 
		for(int i=0;i