📄 ques.htm
字号:
<html>
<head>
<meta http-equiv="content-Type" content="text/html; charset=gb2312">
<style>
.unnamed1 { font-family: "宋体"; font-size: 9pt; text-decoration: none; color: #666666}
body { font-family: "宋体", "仿宋_GB2312", "楷体_GB2312"; font-size: 9pt}
tr { font-family: "宋体", "仿宋_GB2312", "楷体_GB2312"; font-size: 9pt}
body {
background-color:#FFFFFF;
SCROLLBAR-FACE-COLOR: #f0f0f0;
SCROLLBAR-HIGHLIGHT-COLOR: #ffffff;
SCROLLBAR-SHADOW-COLOR: #339966;
SCROLLBAR-3DLIGHT-COLOR: #339966;
SCROLLBAR-ARROW-COLOR: #000000;
SCROLLBAR-TRACK-COLOR: #f0f0f0;
SCROLLBAR-DARKSHADOW-COLOR: #ffffff
}
-->
</style>
<title></title>
</head>
<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" bgcolor="#FFFFFF" text="#669933" link="#CC3300" bgproperties="fixed" background="bj.gif" tppabs="http://162.105.30.75/materialroot/ug3/compiler_project/bj.gif">
<table width="630" border="0" cellpadding="0" cellspacing="5" align="center" height="103">
<tr>
<td align="left" valign="top" height="175">
<font size="2">
<br>
<br>
</font> <b><font color="#000080" size="3">提请注意的几个问题</font><font size="2"><br>
</font>
</b><font size="2"><br>
</font><font size="3">1. 总体要求和实现步骤</font><font size="2"><br>
<br>
(1) 从min-pascal语言的语法定义中分离出词法定义,复习第二章词法分析,设计并实现词法分析器.(第1周至第3周)<br>
<br>
(2) 研究min-pascal语言的语法定义, 若不使用yacc,选择一种语法分析方法,实现语法分析器,LR语法分析方法不适于手工构造.
(第4周至第6周)<br>
<br>
(3) 研究min-pascal语言的语义, min-pascal抽象计算机,写出编译min-pascal程序应生成的min-pascal抽象计算机的目标代码, 这是设计编译程序必要的也是关键性的工作。至此,您就知道在识别出一个语法单位后编译程序应该做什么。(第7周至第8周)<br>
<br>
(4) 根据语义子程序的要求设计并实现符号表及其操作,关键是设计出每种结构中包含的域.. 符号表是联结上下文的纽带,符号表的组织对于提高编译程序的速度是至关重要的。(第9周至第10周)<br>
<br>
(5) 设计并实现语义子程序,语义子程序中应包括类型分析,作用域分析和生成目标代码。(第11周至第12周)<br>
<br>
(6) 整体调试并写出文挡,文挡的要求见4. (第13周至第15周)<br>
<br>
编译程序应严格检查源程序中存在的语法和语义错误,出错处理程序应准确指出出错的位置和错误的性质。此外,实用界面应至少提供编译和运行两条命令给用户。<br>
<br>
</font><font size="3">2. 实现工具</font><font size="2"><br>
<br>
编译程序可用Pasca1,C,C+十中任一种语言书写,其中应有不少于10%(按行计)的注释。也可选用软件工具lex和
yacc..<br>
<br>
</font><font size="3">3.讲义中的要求是基本的,可选择如下扩充:</font><font size="2"> <br>
<br>
(1) 把标准类型扩充到real和char;<br>
<br>
(2) 把min-pascal抽象机用pc汇编语言书写;<br>
<br>
(3) 设计一个把min-pascal翻译到pc汇编语言的抽象机;<br>
<br>
</font><font size="3">4.关于«编译实习»报告(占30%),主要反映自己的工作,应包括:结构设计文档</font><font size="2"><br>
<br>
(1)源文件中含有哪几个文件,每个文件实现的功能,定义了哪些函数; <br>
<br>
(2)如果是采用面向对象的语言编程, 比如C++(以下都以C++代指面向对象语言),就要写出每个文件中定义的类, 类与类之间的继承关系等。<br>
<br>
(3)用简单的图形画出自己的编译程序的流程,其中的中间过程要用自己源代码中文件名或者过程名标记, 不能用抽象的术语代替。<br>
<br>
(4) 写明这个编译程序是用工具构造还是手写,语法分析采用么样的方法实现,是否具有错误恢复和连续报错的功能。自己实现的编译程序的特色。<br>
<br>
(5) 目标语言的语法公式。 详细设计文档<br>
<br>
(1)列出各文件中函数的作用、算法实现和参数的具体含义。<br>
<br>
(2)如果是用C++, 就列出每个类的成员变量的作用和属性(是私有、公有、保护还是友员), 成员函数的作用、算法实现、属性和参数的具体含义。<br>
<br>
(3)符号表的设计列出每一类表项的各个域, 并详细解释它们在不同情况下的作用。 解释符号表的组织方法,它是怎样解决不同作用域中同名变量共存的问题的。符号表的操作:检索,插入,删除。 <br>
<br>
(4)典型的算法描术,例如:判断实参是否满足形参要求,类型同一,相容,赋值相容检查,标识符的非局部引用等。<br>
<br>
测试文档<br>
<br>
(1)自己在调试程序过程中编写的所有测试程序(写清楚该测试针对的语法点,或者说可能的程序漏洞)。<br>
<br>
(2)至少举一个测试例子,内容是在编写语法分析、语义分析时遇到的困难,或者是在调试时发现的大BUG: *首先清楚地描述问题,可以列出编译源文件中的信息来帮助说明。*然后详细叙述你解决问题的途径, 包括定义了哪些数据结构或函数,它们又是怎么使用的。*找到导致错误的那段代码,把改正前后的代码拷贝到这份报告中,请注明代码出自哪个源 文件,并以加黑字体标记关键的代码。<br>
<br>
总结<br>
<br>
总结应突出反映您在设计实现本编译程序时所遇到的问题,解决的方法。也应包括取得的经验,收获以及对本课程的建议和意见.<br>
<br>
</font><font size="3">5. 测试在系机房进行,</font><font size="2"><br>
<br>
每位实习者在自己的帐户下设置一个目录,称为<br>
<br>
compiler,其中应包括如下七个文件:<br>
<br>
编译程序源文件:com.c; <br>
<br>
编译程序可执行文件:comp.exe<br>
<br>
如何使用您的编译程序的说明:chelp<br>
<br>
自测程序(列出自己测试用的所有程序)文件:ctest.pas<br>
<br>
出错处理用的每种编码和提示信息文件:cerorr.c <br>
<br>
文档 cdocu.word<br>
<br>
实习过程历史文档 docu.word<br>
<br>
</font><font size="3">6. 评分标准</font><font size="2"><br>
<br>
程序的正确性: 40%<br>
<br>
出错处理: 10%<br>
<br>
创造性 10%<br>
<br>
结构设计文档: 7%<br>
<br>
祥细设计文档: 15%<br>
<br>
测试文档: 8%<br>
<br>
按时完成阶段实习任务:10%<br>
</font></td>
</tr>
</table>
</body>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -