1997年编译原理试题

上传人:每**** 文档编号:46391631 上传时间:2021-12-13 格式:DOC 页数:8 大小:34.50KB
返回 下载 相关 举报
1997年编译原理试题_第1页
第1页 / 共8页
1997年编译原理试题_第2页
第2页 / 共8页
1997年编译原理试题_第3页
第3页 / 共8页
点击查看更多>>
资源描述
1997年编译原理试题1(10分)某操作系统下合法的文件名为device:name.extension其中第一部分(device:)和第三部分(.extension)可缺省,若device, name和extension都是字母串,长度不限,但至少为1,画出识别这种文件名的确定有限自动机。2(20分)a.下面的二义文法描述命题演算公式,为它写一个等价的非二义文法。S S and S | S or S | not S | p | q | (S)b. 下面文法是否为LL(1)文法?说明理由。S A B | P Q x A x y B b cP d P | Q a Q | 3(10分)某些语言允许给出名字表的一个属性表,也允许声明嵌在另一个声明里面,下面文法抽象这个问题。D attrlist namelist | attrlist (D)namelist id, namelist | idattrlist A attrlist | AA decimal | fixed | float | realD attrlist namelist的含义是:在namelist中的任何名字有attrlist 中给出的所有属性。D attrlist (D) 的含义是:在括号中的声明提到的所有名字有attrlist 中给出的所有属性,而不管声明嵌套多少层。 写一个翻译方案,它将每个名字的属性个数填入符号表。为简单起见,若属性重复出现,则重复计数。4(10分)把表达式-(a+b)*(c+d)+(a+b+c)翻译成四元式。5(10分)由于文法二义引起的LR(1)分析动作冲突,可以依据消除二义的规则而得到LR(1)分析表,根据此表可以正确识别输入串是否为相应语言的句子。对于非二义非LR(1)文法引起的LR(1)分析动作的冲突,是否也可以依据什么规则来消除LR(1)分析动作的冲突而得到LR(1)分析表,并且根据此表识别相应语言的句子?若可以,你是否可以给出这样的规则?6(5分) UNIX 下的C编译命令cc的选择项g和O的解释如下,其中dbx的解释是“dbx is an utility for source-level debugging and execution of programs written in C”。试说明为什么用了选择项g后,选择项O便被忽略。 -g Produce additional symbol table information for dbx(1) and dbxtool(1) and pass -lg option to ld(1)请预览后下载! (so as to include the g library, that is: /usr/lib/libg.a). When this option is given, the -O and -R options are suppressed. -Olevel Optimize the object code. Ignored when either -g, -go, or -a is used. .7(15分)下面程序在SUN工作站上运行时陷入死循环,试说明原因。如果将第8行的long *p改成short *p,并且将第23行long k 改成short k后,loop中的循环体执行一次便停止了。试说明原因。main()addr();loop();long *p;loop()long i,j;j=0;for(i=0;i10;i+)(*p)-;j+;addr()long k;k=0;p=&k;8(15分)下面程序的结果是120。但是如果把第10行的abs(1)改成1的话,则程序结果是请预览后下载!1。试分析为什么会有这不同的结果。int fact()static int i=5;if(i=0) return(1);else i=i-1;return(i+abs(1)*fact();main()printf(factor of 5 = %dn, fact();9(5分)在文件stdlib.h中,关于qsort的外部声明如下:extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *);下面C程序所在的文件名是type.c,用Solaris C编译器编译时,错误信息如下:type.c, line 24: warning: argument is incompatible with prototype: arg #4请你对该程序略作修改,使得该警告错误能消失,并且不改变程序的结果。注:程序中关于变量astHypo和n的赋值以及其它部分被略去。Solaris C比ANSI C有更严格的静态检查。#include typedef struct int Ave; double Prob;HYPO;HYPO *astHypo;请预览后下载!intn;int HypoCompare(HYPO *stHypo1, HYPO *stHypo2) if (stHypo1-ProbstHypo2-Prob) return(-1); else if (stHypo1-ProbProb) return(1); else return(0); /* end of function HypoCompare */main()qsort ( astHypo,n,sizeof(HYPO),HypoCompare);请预览后下载!渺渺红尘,茫茫人海,没有过早,也没有太晚,遇见的自然是恰逢其时。有人说,这世间的所有相遇,都是久别重逢。惟有父母与子女,是为了别离。父母为自己付出的,永远是百分之百的绵绵恒爱。每当看到满头如雪,弯腰驼背,步履蹒跚的父亲母亲,总会不由自主地想起,他们曾用最纯朴、最勤劳的方式为自己撑起过一片天,现如今却是衰老伴着他们走过一年又一年。于父母眼里,自己就像飘在天空的风筝,无论飞得多高多远,他们也舍不得松开牵挂的那根线。这种深厚的爱,若高山阔海,就算用一辈子的时间,恐怕也回馈不完 .想来那句:你养我长大,我陪你变老,应是最好的报答。记得一首友情的歌,里面那段歌词格外打动人:友情,人人都需要友情,不能孤独,踏上人生的旅程听完,特别想感谢那些出现在自己不同人生阶段的朋友,感谢这一路上你们给予的支持和鼓励。此生何其幸运,能成为彼此的亲密挚友。除了家人,最熟悉我的还有你童年,一起玩耍嬉戏;少年,一起努力学习;青年,互相聆听各自的小秘密;愿中年的彼此,都能好好保重自己;愿我们老的时候还能一起喝茶、一起聊聊不太完美的却又共同参与过的往昔。人生能有三五知己,懂得自己,足矣!佛说,每一次相遇都是一场修行。想必爱情更是如此。于风雨兼程的人生里,在五味杂陈的生活中,谁是谁的月下客,谁是谁的心上人,谁与谁会一见倾心,谁与谁能相伴到岁末晚景,凭的就是一份缘。感谢即将成为自己人生中最亲爱的你,相遇是缘,相恋是爱,相守是情。请预览后下载!请预览后下载! (注:可编辑下载,若有不当之处,请指正,谢谢!) 请预览后下载!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!