📄 show.h
字号:
#include "data.h"
#include <iostream>
#include <fstream>
using namespace std;
ofstream out1("FOLLOW.txt");
ofstream out2("G.txt");
ofstream out3("G_extend.txt");
ofstream out4("LR(0)Set.txt");
ofstream out5("SLR(1)Grid.txt");
void Show_First()
{
for(int i=0;i<vn_cnt;i++)
{
cout<<"FIRST("<<Vn[i]<<")={ ";
for(int ii=0;ii<31;ii++)
if(first_v[Vn[i]]&binary[ii]) cout<<Vt[ii]<<' ';
cout<<" }"<<endl;
}
for(int i=0;i<vn_cnt;i++)
{
out1<<"FIRST("<<Vn[i]<<")={ ";
for(int ii=0;ii<31;ii++)
if(first_v[Vn[i]]&binary[ii]) out1<<Vt[ii]<<' ';
out1<<" }"<<endl;
}
}
void Show_Follow()
{
for(int i=0;i<vn_cnt;i++)
{
cout<<"FOLLOW("<<Vn[i]<<")={ ";
for(int j=0;j<31;j++) if(follow[Vn[i]].t&binary[j]) cout<<Vt[j]<<' ';
if(follow[Vn[i]].start) cout<<"# ";
cout<<" }"<<endl;
}
for(int i=0;i<vn_cnt;i++)
{
out1<<"FOLLOW("<<Vn[i]<<")={ ";
for(int j=0;j<31;j++) if(follow[Vn[i]].t&binary[j]) out1<<Vt[j]<<' ';
if(follow[Vn[i]].start) out1<<"# ";
out1<<" }"<<endl;
}
}
void Show_G_extend()
{
cout<<endl<<"拓展文法G~为: "<<endl;
for(int i=0;i<g_extend_cnt;i++)
{
cout<<i<<' '<<g_extend[i].left<<"->";
for(int j=0;j<g_extend[i].l;j++)
{
if(j==g_extend[i].dot_pos) cout<<'.'<<g_extend[i].right[j];
else cout<<g_extend[i].right[j];
}
if(g_extend[i].l==g_extend[i].dot_pos) cout<<'.';
cout<<endl;
}
out3<<"拓展文法G~为: "<<endl;
for(int i=0;i<g_extend_cnt;i++)
{
out3<<i<<' '<<g_extend[i].left<<"->";
for(int j=0;j<g_extend[i].l;j++)
{
if(j==g_extend[i].dot_pos) out3<<'.'<<g_extend[i].right[j];
else out3<<g_extend[i].right[j];
}
if(g_extend[i].l==g_extend[i].dot_pos) out3<<'.';
out3<<endl;
}
}
void Show_SLR1Grid()
{
cout<<endl<<"SLR分析表为:"<<endl;
cout<<" ";
for(int j=0;j<vt_cnt;j++) cout<<Vt[j]<<" ";
for(int j=0;j<vn_cnt;j++) cout<<Vn[j]<<" ";
cout<<endl;
for(int i=0;i<c_len;i++)
{
if(i<10)
cout<<i<<" ";
else cout<<i<<' ';
for(int j=0;j<vt_cnt;j++)
{
if(ACTION[i][Vt[j]]==0) cout<<"acc";
else if(ACTION[i][Vt[j]]==ERROR) cout<<" ";
else if(ACTION[i][Vt[j]]>=0) cout<<'s'<<ACTION[i][Vt[j]]<<" ";
else cout<<'r'<<-ACTION[i][Vt[j]]<<" ";
}
for(int j=0;j<vn_cnt;j++)
{
if(GOTO[i][Vn[j]]==ERROR) cout<<" ";
else cout<<' '<<GOTO[i][Vn[j]]<<' ';
}
cout<<endl;
}
out5<<"SLR分析表为:"<<endl;
out5<<" ";
for(int j=0;j<vt_cnt;j++) out5<<Vt[j]<<" ";
for(int j=0;j<vn_cnt;j++) out5<<Vn[j]<<" ";
out5<<endl;
for(int i=0;i<c_len;i++)
{
if(i<10)
out5<<i<<" ";
else out5<<i<<' ';
for(int j=0;j<vt_cnt;j++)
{
if(ACTION[i][Vt[j]]==0) out5<<"acc";
else if(ACTION[i][Vt[j]]==ERROR) out5<<" ";
else if(ACTION[i][Vt[j]]>=0) out5<<'s'<<ACTION[i][Vt[j]]<<" ";
else out5<<'r'<<-ACTION[i][Vt[j]]<<" ";
}
for(int j=0;j<vn_cnt;j++)
{
if(GOTO[i][Vn[j]]==ERROR) out5<<" ";
else out5<<' '<<GOTO[i][Vn[j]]<<' ';
}
out5<<endl;
}
}
void Show_G()
{
cout<<"所输入文法为:"<<endl;
for(int i=0;i<g_cnt;i++)
{
cout<<g[i].left<<"->"<<g[i].right<<endl;
}
cout<<"文法中共有"<<vt_cnt<<"个终结符: ";
for(int i=0;i<vt_cnt;i++)
{
cout<<Vt[i]<<' ';
}
cout<<endl<<"文法中共有"<<vn_cnt<<"个非终结符: ";
for(int i=0;i<vn_cnt;i++)
{
cout<<Vn[i]<<' ';
}
cout<<endl<<endl;
out2<<"此文法中共有"<<vt_cnt<<"个终结符: ";
for(int i=0;i<vt_cnt;i++)
{
out2<<Vt[i]<<' ';
}
out2<<endl<<"此文法中共有"<<vn_cnt<<"个非终结符: ";
for(int i=0;i<vn_cnt;i++)
{
out2<<Vn[i]<<' ';
}
out2<<endl;
}
void ShowItem(C temp)
{
for(int i=0;i<temp.l;i++)
{
cout<<g_extend[temp.item[i]].left<<"->";
for(int j=0;j<g_extend[temp.item[i]].l;j++)
{
if(j==g_extend[temp.item[i]].dot_pos) cout<<'.'<<g_extend[temp.item[i]].right[j];
else cout<<g_extend[temp.item[i]].right[j];
}
if(g_extend[temp.item[i]].l==g_extend[temp.item[i]].dot_pos) cout<<'.';
cout<<endl;
}
cout<<endl;
}
void ShowItem_F(C temp)
{
for(int i=0;i<temp.l;i++)
{
out4<<g_extend[temp.item[i]].left<<"->";
for(int j=0;j<g_extend[temp.item[i]].l;j++)
{
if(j==g_extend[temp.item[i]].dot_pos) out4<<'.'<<g_extend[temp.item[i]].right[j];
else out4<<g_extend[temp.item[i]].right[j];
}
if(g_extend[temp.item[i]].l==g_extend[temp.item[i]].dot_pos) out4<<'.';
out4<<endl;
}
out4<<endl;
}
void Show_LR0()
{
cout<<endl<<"LR(0)项目集规范族为:"<<endl;
for(int i=0;i<c_len;i++)
{
cout<<"I"<<i<<":"<<endl;
ShowItem(c[i]);
}
out4<<"LR(0)项目集规范族为:"<<endl;
for(int i=0;i<c_len;i++)
{
out4<<"I"<<i<<":"<<endl;
ShowItem_F(c[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -