📄 grammer.cpp
字号:
/*//此文件是读入规格化文法的类,即读入可到达的产生式
typedef struct GRAMMER
{
string leftLabel;
vector<string> vc_rightLable;
};
class Grammer
{
private:
vector<GRAMMER> vc_grammer;
ifstream in;
public:
Grammer(const char filename[]);
vector<string> getProduce(int pos);
void push(GRAMMER gr);
~Grammer(){};
};*/
#include "main.h"
using namespace std;
Grammer::Grammer(const char filename[])
{
int line;
bool b_l=false;
in.open(filename,ios_base::in);
if(!in)
{
cerr<<"open file"<<filename<<"error\n";
exit(1);
}
in>>line;
this->line=line;
cout<<"Line="<<this->line<<endl;
for(int i=0;i<line;i++)
{
GRAMMER gram;
string s;
while(in>>s)
{
if(s==":") continue;
if(s[0]=='$')
{
gram.leftLabel=s.substr(1,s.size()-1);
}
else if(s[s.size()-1]=='$')
{
s.erase(s.size()-1);
gram.vc_rightLable.push_back(s);
push(gram);
break;
}
else gram.vc_rightLable.push_back(s);
}
}
in.close();
}
GRAMMER Grammer::getProduce(unsigned int pos)
{
if(pos<vc_grammer.size())
{
return vc_grammer[pos];
}
else cerr<<"get grammerProduce error\n";
}
void Grammer::push(GRAMMER gr)
{
vc_grammer.push_back(gr);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -