📄 slr1grid.h
字号:
#include "DATA.h"
int Find_G(G_EXTEND temp)
{
for(int i=0;i<g_cnt;i++)
{
if(strcmp(g[i].right,temp.right)==0) return i+1;
}
return 0;
}
void SLR1Grid()
{
memset(ACTION,0,sizeof(ACTION));
memset(GOTO,0,sizeof(GOTO));
/* for(int i=0;i<128;i++)
if(follow[i].t)
{
cout<<char(i)<<' '<<follow[i].t<<endl;
}
system("pause");*/
for(int i=0;i<c_len;i++)
{
for(int j=0;j<vt_cnt;j++)
ACTION[i][Vt[j]]=ERROR;
for(int j=0;j<vn_cnt;j++)
GOTO[i][Vn[j]]=ERROR;
}
for(int i=0;i<c_len;i++)
for(int j=0;j<c[i].l;j++)
{
int t=c[i].item[j];
if(g_extend[t].left=='$' && g_extend[t].dot_pos==g_extend[t].l)
{
ACTION[i]['#']=0;
}
else if(g_extend[t].dot_pos==g_extend[t].l)
{
// cout<<t<<' '<<g_extend[t].left<<"->"<<g_extend[t].right<<endl;
int jj=Find_G(g_extend[t]);
for(int k=0;k<vt_cnt-1;k++)
if(follow[g_extend[t].left].t && (follow[g_extend[t].left].t&binary[k]) )
{
// cout<<follow[g_extend[t].left].t<<' '<<Vhash[k]<<' '<<(follow[g_extend[t].left].t&Vhash[k])<<endl;
// cout<<i<<' '<<Vt[k]<<' '<<jj<<endl;
ACTION[i][Vt[k]]=-jj;
}
if(follow[g_extend[t].left].start)
{
//cout<<i<<' '<<'#'<<' '<<jj<<endl;
ACTION[i]['#']=-jj;
}
//system("pause");
}
else
{
if(g_extend[t].right[g_extend[t].dot_pos]<'A' || g_extend[t].right[g_extend[t].dot_pos]>'Z')
{
/* cout<<i<<' '<<g_extend[t].right[g_extend[t].dot_pos]<<' '<<go[i][g_extend[t].right[g_extend[t].dot_pos]]<<endl;
system("pause");*/
ACTION[i][g_extend[t].right[g_extend[t].dot_pos]]=go[i][g_extend[t].right[g_extend[t].dot_pos]];
}
else
{
GOTO[i][g_extend[t].right[g_extend[t].dot_pos]]=go[i][g_extend[t].right[g_extend[t].dot_pos]];
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -