- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《编译原理》实验报告
实验1 查填符号表
姓名 学号 班级 计科1001班
时间: 2012/3/22 地点:文波
同 组 人:无
指导教师:朱少林
实验目的
1、运用所学知识,选择语言、选择算法(数据结构),编程实现符号表管理程序。
2、熟悉编译过程,训练编写程序的能力,为后续实验积累经验。
实验内容
1、运用所学知识,编程实现符号表管理程序。读出源程序中与C语言词法规定相一致的标识符,并在符号表中进行查找,若存在则输出该标识符及其编号和位置;否则将其填入符号表,并分配编号,确定位置,输出该标识符。
2、输出标识符表。
实验环境
软件:VC++6.0
实验前准备
方案设计:
准备模拟数据:由于是识别符合c语言规定的标识符,故本实验中使用 “测试文件.c”
写出c语言标识符的正规式定义:letter_→A|B|C|…Z|a|b|…z|_
digit→0|1|…9 id→letter_(letter_|digit)*
画出不确定的有限自动机
不确定的有限自动机如下:
进行化简:
A={1}
B={2,3,4,5,9}
C={3,4,5,6,8,9}
D={3,4,5,7,8,9}
状态转换表如下:
状态 letter_ digit A B B C D C C D D C D 进行化简:{A} {B,C,D}
化简后的确定有限自动机如下:
程序思想:该实验重点是构造识别标识符的函数。程序中,使用的数据结构如下:
struct record
{
char name[20];
};
typedef struct record RECORD;
record是用来记录标识符的名字,并且规定标识符的长度最大为20
struct infor//记录符号表的相关信息
{
struct record *head;
int length; //记录符号表的长度
};
typedef struct infor INFOR;
infor是用来指向record结构体的指针和符号表的长度,这个结构体主要是用于比较标识符并将识别到的标识符写入分析结果文件中即本实验中的“search_table”函数,该函数并没有直接把标识符写到文件,而是在该函数之外,新建一个文件用来放符号表,然在后来打印符号表的同时把打印的结果写该文件中去。
该程序中的“search_table”函数判断是否为新的标识符的方法就是把识别的一个标识符与已经识别的一一比较看是否相同,如不相同则表长度加1,并将该标识符填入表中
while( jistrcmp(teststring,point[j].name))
{
j++;
}//与已有的标识符一一比较
if(j==i)//说明是新的标识符
{
strcpy(point[j].name,teststring);
//point[j].line=j;
p-length++;
}
程序设计
#include stdio.h
#include stdlib.h
#include string.h
struct record
{
char name[20];
};
typedef struct record RECORD;
struct infor//记录符号表的相关信息
{
struct record *head;
int length; //记录符号表的长度
};
typedef struct infor INFOR;
void search_table(char *teststring, INFOR *p, FILE *f)//查填符号表函数,p为指向结构体的指针
{
int i=p-length;
int j=0;
RECORD *point;
point=p-head;
while( jistrcmp(teststring,point[j].name))
{
j++;
}//与已有的标识符一一比较
if(j==i)//说明是新的标识符
{
strcpy(point[j].name,teststring);
//point[j].line=j;
p-length++;
}
printf(标识符%s在符号表的第%d行\n,teststring,j+1);
fprintf(f,%s\t%5d\n,teststring,j+1);//将新的标识符写入文件分析结果文件f中
ret
您可能关注的文档
- 继电保护及安全自动装置检修规程.doc
- 综合布线考试题及答案.doc
- 综合实验一机械工程中的温度测量.doc
- 综合布线工程竣工文档.doc
- 矿床采技水文地质划分.doc
- 矿山电工学.docx
- 综合布线试题1.doc
- 综合布线重要知识点.doc
- 综合归类理论试题(各校).doc
- 砂夹石施工方案.doc
- 2025至2030中国移动治疗台行业发展研究与产业战略规划分析评估报告.docx
- 2025至2030链激酶行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030爆炸物探测扫描仪行业市场占有率及有效策略与实施路径评估报告.docx
- 2025至2030四川省智能制造行业细分市场及应用领域与趋势展望研究报告.docx
- 2026届高三二轮复习试题政治大单元突破练1生产资料所有制与分配制度含解析.docx
- 2026届高三二轮复习试题政治大单元突破练16哲学基本思想与辩证唯物论含解析.docx
- 2026届高三二轮复习试题政治大单元突破练2社会主义市场经济体制含解析.docx
- 浙江省衢州市五校联盟2025-2026学年高二上学期期中联考技术试题-高中信息技术含解析.docx
- 浙江省金丽衢十二校2026届高三上学期11月联考政治试题含解析.docx
- 2026届高三二轮复习试题政治大单元突破练7领导力量:中国共产党的领导含解析.docx
最近下载
- 信息技术与高中数学课堂教学融合路径研究.pptx VIP
- 2023ABB VD4真空断路器安装使用说明书.docx VIP
- MDCG 2022-21 欧盟定期安全更新报告(PSUR)指南(中文版).pdf VIP
- 七年级数学上册2.2.1同类项与合并同类项课件新版北京课改版 (2).ppt VIP
- 宝宝是从哪里来的.ppt VIP
- 信息技术与高中数学课堂教学深度融合的案例研究 (6).pptx VIP
- PPT:继往开来:从“十四五”辉煌成就到坚定不移迈向“十五五”新征程(四中全会).pptx VIP
- 黄帝的传说(课件).pptx VIP
- 2025年大学《化学测量学与技术》专业题库—— 分子探针技术在化学测量中的应用.docx
- 重型柴油车OBD尾气检测系统方案 ppt课件.doc VIP
原创力文档


文档评论(0)