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