- 22
- 0
- 约2.22千字
- 约 9页
- 2019-03-17 发布于湖北
- 举报
PAGE
PAGE 2
实验四:正规式到正规文法的转换
一:要求
输入任意的正规式,输出相应的正规文法
二:实验目的
熟练掌握正规式到正规文法的转换规则
理解正规文法和正规式的等价性
三:实验原理1.一个正规语言可以由正规文法定义,也可以由正规式定义,对任意一个正规文法,存在一个定义同一个语言的正规式,反之,对每个正规式,存在生成同一个语言的正规文法
2正规文法与正规式的转换规则:
1. A-〉xB,B-y则:A=xy
2.A-〉xA,A-y 则:A-〉x*y
3.A-〉x,A-〉y 则:A=x|y
四:数据结构与算法
struct Chomsky
{
string left;
string right;
};
void apart(Chomsky *p,int i) //分开产生式左右部
void VNVT(Chomsky *p)//求VN和VT
void print(Chomsky *p)//输出四元组,即正规文法
void change(Chomsky *p)//正规式到正规文法的转换函数
五:出错分析
1: 自定义的变量容易弄混,注释清楚很重要。很容易导致没有定义这种错误。
2:if条件判断内容不明确,字符串的分段获取不清楚。
3:程序没有写出来,实验失败。
六:实验结果与分析
七:源代码
#includeiostream
#includestring
using namespace std;
#define max 50
int NONE=1;
int RELEFT=1;
string strings,noend,end;//非终结符与终结符存储
string r;//正规式
int m=1;//记录产生式的个数
struct Chomsky//正规文法结构存储
{
string left;
string right;
};
void apart(Chomsky *p,int i) //分开产生式左右部
{
int j;
for(j=0;jstrings.length();j++)
if(strings[j]==-)
{
p[i].left=strings.substr(0,j);
p[i].right=strings.substr(j+1,strings.length()-j);
}
}
void VNVT(Chomsky *p)//求VN和VT
{
int i,j;
for(i=0;im;i++)
{
for(j=0;j(int)p[i].left.length();j++)
{
if((p[i].left[j]=Ap[i].left[j]=Z))//非终结符判断
{
if(noend.find(p[i].left[j])100)
noend+=p[i].left[j];
}
else
{
if(end.find(p[i].left[j])100)
end+=p[i].left[j];
}
}
for(j=0;j(int)p[i].right.length();j++)
{
if(!(p[i].right[j]=Ap[i].right[j]=Z))//终结符判断
{
if(end.find(p[i].right[j])100)
end+=p[i].right[j];
}
else
{
if(noend.find(p[i].right[j])100)
noend+=p[i].right[j];
}
}
}
}
void print(Chomsky *p)//输出四元组
{
int i;
coutendlG=({noend},{end},P,noend[0]),其中P由下列产生式组成:endl;
for(i=0;im;i++)
coutp[i].left-p[i].rightendl;
}
void change(string q)//正规式到正规文法的转换函数
{
/*char S;//文法开始符号
p[0].left=S;//将正规式r重写为S-r形式存储在正规文法的第一条
p[0].right=q;
int n;//记录文法右边的长度
n=p[0].right.length;
for(int i=0;in;i++)
{
if(p[0].right.[i]==)
}*/
}
void main()
{
int i,j;
cout编译原理实验四:正规式到正规文法的转换endl;
Chomsky *p=new
您可能关注的文档
最近下载
- 中小学生端午节假期安全教育主题班会PPT课件.pptx VIP
- 机器人等级考试三四级资料-第01课:初识Mixly和Fduino UNO.pptx VIP
- FULING富凌H200空压机中文说明书说明书用户手册.pdf
- Praat语音软件操作手册.docx VIP
- 2025-2026学年重庆市江津实验中学、田家炳中学、李市中学、白沙中学等金砖六校九年级(上)期末化学模拟试卷(含答案).pdf VIP
- 阿特拉斯•科普柯 冷冻式干燥机.pdf VIP
- 重庆市九龙坡区2024-2025学年九年级上学期期末考试数学试题(含答案与解析).pdf VIP
- 浙江省杭州市富阳区2023-2024学年三年级上学期数学期末试卷.docx VIP
- TXFQC-合成橡胶消防水带.pdf VIP
- 重庆市九龙坡区渝高教育集团2024-2025学年九年级上学期期末考试物理试题(含答案).pdf VIP
原创力文档

文档评论(0)