下载此文档

正规文法-正规式.doc


文档分类:论文 | 页数:约21页 举报非法文档有奖
1/21
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/21 下载此文档
文档列表 文档介绍
正规文法-正规式
{
string left; //规则左部,因为输入的为2型文法,
string right; //规则右部
};
struct RuleData
{
string= 0; j < int (grammardata[i].()); j++)
{
= grammardata[i].(j);
(rule);
}
}
}
}
void Grammar::Show()
{
cout<<"输入的文法的正规式为:"<<endl;
for (int i=0; i< int (()); i++)
cout<<grammar[i].left<<"="<<grammar[i].right<<endl;
}
class GenerateGtoE: public Grammar //正规文法转正规式
{
private:
public:
GenerateGtoE(){}
~GenerateGtoE(){}
void Generating ();
};
void GenerateGtoE::Generating ()
{
DataChange (0);
//STEP 1
//将文法G的所有非终结符形如a1A|a2A|...的候选式
//归并为(a1|a2|...)A的侯选式, 其中a∈Vt,A∈Vn
string Z1 = "|";
string Z2 = "(";
string Z3 = ")";
string Z4 = "*";
string help1, help2;
for (int i = 0; i < int (()); i++)
for (int j = 0; j <int ( grammardata[i].()); j++)
for(int k = j + 1; k < int (grammardata[i].()); k++)
{
();
();
int cj = grammardata[i].(j).length() - 1;
int ck = grammardata[i].(k).length() - 1;
string Aj = grammardata[i].(j).substr(cj);
string Ak = grammardata[i].(k).substr(ck);
if (Aj == Ak && Aj >= "A" && Aj <= "Z")
{
if (grammardata[i].(j).find (Z2) != 0)
{
help1 = Z1 + grammardata[i].(k).substr(0, ck);
help2 = Z2 + grammardata[i].(j).substr(0, cj);
grammardata[i].(j) = help2 + help1 + Z3 + Aj;
}
else
{
help1 = Z1 + grammardata[i].(k).substr(0, ck);
help2 = grammardata[i].(j).substr(0, cj-1);
grammardata[i].(j) = help2 + help1 + Z3 + Aj;
}

for(int t=k;t < int (grammardata[i].()-1);t++)
{
grammardata[i].(t)=grammardata[i].(t+1);
}
grammardata[i].();

正规文法-正规式 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数21
  • 收藏数0 收藏
  • 顶次数0
  • 上传人艾米
  • 文件大小2.69 MB
  • 时间2022-04-05