编译原理实验报告总结(精选9篇)
编译原理实验报告总结 篇1
编译原理实验报告
报告完成日期 2018.5.30
一. 组内分工与贡献介绍
二. 系统功能概述;
我们使用了自动生成系统来完成我们的实验内容。我们设计的系统在完成了实验基本要求的前提下,进行了一部分的扩展。增加了声明变量类型、类型赋值判定和声明的变量被引用时作用域的判断。从而使得我们的实验结果呈现的更加清晰和易懂。
三. 分系统报告;
一、词法分析子系统
词法的正规式:
标识符
<字母>(<字母>|<数字字符>)* 十进制整数
0 |(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)* 八进制整数 0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* 十六进制整数 0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* 运算符和分隔符 +| * | / | > | < | = |(|)| <=|>=|==; 对于标识符和关键字: A5—〉 B5C5 B5—〉a | b |⋯⋯| y | z C5—〉(a | b |⋯⋯| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε 综上正规文法为: S—〉I1|I2|I3|A4|A5 I1—〉0|A1 A1—〉B1C1|ε C1—〉E1D1|ε D1—〉E1C1|ε
E1—〉0|1|2|3|4|5|6|7|8|9 B1—〉1|2|3|4|5|6|7|8|9 I2—〉0A2 A2—〉0|B2 B2—〉C2D2 D2—〉F2E2|ε E2—〉F2D2|ε
C2—〉1|2|3|4|5|6|7 F2—〉0|1|2|3|4|5|6|7 I3—〉0xA3 A3—〉B3C3 B3—〉0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f C3—〉(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)|C3|ε
A4—〉+ |-| * | / | > | < | = |(|)| <=|>=|==; A5—〉 B5C5 B5—〉a | b |⋯⋯| y | z C5—〉(a | b |⋯⋯| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε
状态图
流程图:
词法分析程序的主要数据结构与算法
考虑到报告的整洁性和整体观感,此处我们仅展示主要的程序代码和算法,具体的全部代码将在整体的压缩包中一并呈现
另外我们考虑到后续实验中,如果在bison语法树生成的时候推不出目标的产生式时,我们设计了报错提示,在这个词的位置出现错误提示,将记录切割出来的词在code.txt中保存,并记录他们的位置。
以下是我们的主要代码:
进制的识别:
结果展示:
二、语法分析子系统
根据选择的语法分析方法进行描述
我们使用了递归子程序发,并且对原有的产生式进行了改写,改写后的结果如下: P→LP1|L L→S
S→id=E|{P}|if C then S | if C then S
1else S2 | while C do S1 C→E1C’
C’→>E2| E→int8E’| int10E’| int16E’| idE’|T E’→+T|-T||+TE’|-TE’ T→int8T’| int10T’| int16T’| idT’|F T’→*F|/F|*FT’|/FT’ F→(E)|int8|int10|int16|id 简化的语法图: S的语法图: C的语法图: E的语法图: T的语法图: F的语法图: 流程图: 语法分析子系统的主要数据结构与算法 我们采用了自动生成技术,同样在这里也是展示主要的核心功能代码,全部的代码展示在压缩包中: 我们在设计时,实现了产生式对应的字符串同时标识产生式定义的int值 辅助程序: 生成语法树的程序: 1.树节点: 2.创建新节点 3.创建实数类型新节点 4.创建标识符类型新节点 5.输出语法树 三、三地址码生成器 算法的基本思想: 我们增加了声明变量类型、类型赋值判定和声明的变量被引用时作用域的判断。从而使得我们的实验结果呈现的更加清晰和易懂。 在报错的时候,我们会呈现类型、作用域和赋值三种的问题的报错信息。 流程图: 算法展示: 四、实验体会 这次实验其实总的来说是让我们更加清晰的理解到了我们所学的内容。有时候我们上课听讲,课下复习写作业的时候,其实看似掌握了所学内容,但实际上并没有亲身体会的操作很难让我们深刻的理解其中的相关意义。通过这次实验,我们能够从根源处了解到了我们所学的内容,并且基于我们理解之后的输出。比如词法分析不能采用空格来区分单词,因为存在加减乘除等运算符和分隔符,使用空格来区分可能会造成错误的分解。又比如我们再在程序设计中,常常体会到效率的重要性。影响词法分析的效率的主要因素是各个状态的分支如何规划。如果每个进来的单词都能在最短的时间和最少的匹配次数内找到其入口,则效率将得到很大程度上的提高。所以由此我们产生了声明变量类型、赋值和作用域的想法,将其放在最后来进行判断,这样可以提高整体的执行效率。 另外,这次小组成员彼此不在一个班级,这样从某一方面来说,也加强了我们互相快速熟识并团结协作的能力,有了这种体验,我想我们在今后的生活中,面对这种情况的时候,将会变得更加有经验。 五、源程序 词法分析器: 输入结果: 输出结果: 语义分析结果: 输入: 第二组数据的输入: 输出: 三地址码的输入: 第二组数据的输入: 输出: 随着网络技术的发展, 很多高校都设有计算机专业, 而编译系统是计算机系统的基本组成部分, 是计算机专业学生的必修课。作为一门理论性与实践性较强的课程, 编译原理对学生计算机水平的提高有着重要的作用。但是编译原理的学习的过程中有很多困难, 比如概念性强、逻辑性严密、内容抽象等, 对实践性要求比较高, 学生在学习的过程中不容易把握其知识要点。 1 编译原理实质 编译原理的学习主要是学习其算法, 从编译原理教材中不难发现, 编译原理的学习内容主要是词法分析、语法分析、语义分析、代码生成及优化等。其中语法分析的内容相对比较简单, 编译原理在讲解词法分析的时候, 要把自动机原理与正规表达式融合进来, 然后以较为标准的方式来分析程序的产生;语法分析相对于词法分析就没有这么简单了。目前, 语法分析算法一般有两种, LL自顶向下算法和LR自底向上算法, 特别是LR算法, 一般学生都会觉得比较困难, 甚至放弃自学, 其实LR算法的语法分析器, 一般是采用Yacc来生成的, 不需要自己来实现。而编译原理中编译器需要把程序员写的源程序转换成一种方便处理的数据结构, 这个转换过程是通过语法分析与词法分析来完成的, 只要学生了解简化语法的过程, 就能把词法分析繁琐的工作提出来, 简化学习过程。 2 编译原理课程实验教学现状 在编程原理教学中开展实验教学的内容, 学生的积极性很高, 在实验教学的课堂上学生开动脑筋, 积极发挥自己的聪明才智, 词法分析与语法分析实验完成比较好。可能会在语义分析与代码生成方面遇到一些问题, 对于学生遇到的问题, 教师要积极引导, 使学生认真思考, 强化学生对相关知识的了解。学生在实验过程中遇到的问题主要体现在以下几个方面。 2.1 对实验内容的误解 编译原理在实验教学的过程中, 学生根据实验指导书进行实验步骤的操作, 在实验操作的过程中, 有很多学生由于对基础知识理解不透, 可能会对实验内容产生误解, 从而影响实验效果。比如在测试词法分析程序时, 在实验的过程中可以按照一定的格式输出各类单词符号, 有些学生不理解就把它看做是词法分析程序本身的功能进行实验操作。这样理解的结果会使学生在完成语法分析部分时增加难度, 不能很好将词法分析与语法分析有效的衔接起来。 2.2 对编程实现要求不熟练 在实验学习的过程中, 在教室的指导下虽然有些学生能够理解实验原理和技术, 但是, 在实际实验操作时总是出现错误, 造成这种现象的原因主要是学生在学习过程中, 理论是实践的脱轨。还有些学生在学习的过程中对实验原理理解不够详细, 对原理技术的把握也不准确, 导致学生不能顺利完成实验。 2.3 缺乏规模程序能力 在编程原理的学习过程中, 按照实际完成的符合实验总体任务的编译程序估算, 学生完成的最终编译程序可能在500行左右, 这个编程量才能符合实际学习需求。但是在实际学习过程中, 学生完成的编程量往往与这个数与很大一段的距离。 2.4 利用所学知识解决问题的能力有限 在编程原理实验教学中, 比较难理解的问题一般在语义分析上, 因为它所涉及的数据结构和算法比较多。语义分析没有做好会影响代码生成部分的完成。学生的运用知识解决实际问题的能力不足是造成这种情况出现的重要原因。 3 编译原理课程实验教学改革与探索的措施 编译原理课程是一门理论性的课程, 注重理论知识的讲解, 但是计算机学科本身是一项实践性很强的学科, 只有学生能够学以致用, 才算是真正的学会。在教学的过程中不能使用传统的其他学科的教学方法进行授课, 必须有一套独特的授课方式, 提高学生的实践性。 3.1 分组实验教学 虽然编译原理是一门理论性教学课程, 但是其实验课程的项目也比较重要。通过实验课程学生会将自己在课堂上所学到的知识融会贯通, 运用到实际教学中。在实验课堂上, 首先将学生分为若干个小组, 每组成员各有分工。清晰划分小组成员中每一个人的管理范围, 制定好计划书与可行性分析报告。然后按照实验项目, 小组成员做好实验总结与实践, 这样不仅调动了学生的积极性, 而且能让每一位学生体验一次项目从开始到结束的过程, 培养学生的团队精神。 3.2 竞争式教学 竞争式教学试讲学生按照实验项目分好小组后, 进行小组间的学习竞赛。在完成一个项目的试验后, 教师进行小组评比, 评比时由每个小组的项目负责人阐述整个实验项目的内容、试验方法、实验过程、实验问题以及实验结果等然后对每个小组进行评分, 最终得出排名。这种方法具有很强的趣味性, 能有效的调动学生的学习热情, 使学生在竞争中不断完善自己。 3.3 教学实验的设计与监督 编程原理的实验教学设计要考虑两个个方面的内容:词法分析器设计、语法分析器设计, 通过本课程实验, 使学生理解编译程序设计原理, 培养学生编译程序能力, 加深学生对词法分析器的理解, 使学生熟练掌握语法分析器的设计。同时, 为了提高学生的实验质量, 教师在实验课程中要加强实验结果的监督, 严禁学生在实验中出现抄袭现象。采取先打印实验设计的源程序清单、后进行结果检查的方法。避免试验中的不公平现象。 4 结语 编译原理的实验教学质量的提高, 不仅需要运用有效的实验教学方法, 而且要建立理论联系实际的教学内容和课程体系, 抓住教学重点, 精心设计实验教学内容, 注意调动学生的积极性, 激发学生的学习热情, 使学生在实践中不断提升自我。 摘要:编译原理是计算机专业的主要课程之一, 讲述的内容是程序设计语言编译构造的基本原理以及实现方法。它是一门技术性较强的学科, 在讲课的过程中为了使学生更好的掌握课程内容, 提高学生的学习兴趣, 必须设计一套不同于其它学科的教学方法, 实现教学效果的提高。本文主要从实验教学的问题及现状方面出发, 探讨编译原理教学改革措施。 关键词:编译原理课程,实验教学 参考文献 [1]王改芳, 龚君芳, 李圣文, 张冬梅.编译原理课程实践教学改革探索[J].实验技术与管理2009, 26 (12) :130-131. [2]吴海涛."编译原理"课程实验教学研究与探索[J].计算机教育2009 (24) :66-67. [3]朱素英.普通本科院校编译原理教学内容改革探讨[J].电脑知识与技术2010, 6 (12) :3071-3072. 解释程序:边解释边执行源程序的程序。区别:编译程序有中间代码,而解释程序没有。编译过程的五个阶段: 1、词法分析 任务:对构成源程序的字符串进行扫描和分解,识别出一个个单词。 2、语法分析 任务:在词法分析的基础上,根据语言规则,把单词符号串分解成各类语法单位。 3、语义分析和中间代码产生 任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译。 4、优化 任务:对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效的目标代码。 5、目标代码生成 任务:把中间代码变换成特定机器上的低级语言代码。 编译程序的七个部分词法分析器,语法分析器、语义分析与中间代码产生器、优化器、目标代码生成器、表格管理和出错处理。 编译程序生成的五个办法:机器语言、高级语言、移植、自编译方式和使用工具自动生成。词法规则:指单词符号的形成规则。(也就是正规式) 语法规则:规定了如何从单词符号形成更大的结构。就是语法单位的形成规则。空字:不包含任何符号的序列。闭包:中所有的符号组成的集合。 上下文无关文法是指:所定义的语法范畴是完全独立于这种范畴可能出现的环境的文法。上下文无关文法的四个组成部分:一组终结符号、一组非终结符号、一个开始符号和一组产生式。 终结符号也就是不可再分的基本符号。 非终结符号是用来代表语法范畴,表示一定符号串的集合。开始符号是语言中我们最感兴趣的语法范畴。产生式是定义语法范畴的书写规则。 句子:文法中从开始符号推导的终结符号串。句型:从开始符号推导的符号串。语言:文法中所有句子的集合。 程序语言的单词符号分为五种:关键字、标识符、常数、运算符和界符。二元式表示:(种类,属性) 正规式的运算符有三种:或,连接和闭包。优先顺序是:闭包,连接,或。 DFA怎么识别字:若存在一条从初态结点到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字是a,则称a可为DFA所识别。 DFA怎么识别空字:若DFA的初态结点同时又是终态结点,则空字可为DFA所识别。NFA怎么识别字:若存在一条从某一初态结点到终态结点的通路,且这条通路上所有弧的标记字依序连接成的字等于a,则称a可为NFA识别。 NFA怎么识别空字:若M的某些结点即是初态又是终态结点,或者存在一条从某个初态结点到某个终态结点的空通路,那么,空字可为M所识别。语言的语法结构是用上下文无关文法描述的。 语法分析分为两类:自上而下分析法,自下而上分析法。 自上而下分析法面临的问题:1.文法的左递归问题。2.回溯3.成功可能是暂时的,产生虚假匹配。4.难于知道输入串中出错的确切位置。5.效率低,代价高。为什么消除左递归?因为含有左递归的文法将自上而下分析的过程陷入无限循环。为什么消除回溯?因为回溯统一做一大堆无效的工作。 自下而上分析法:从输入串开始,逐步进行归约,知道归约到文法的开始符号。短语:符号串推导过程中某非终结符推导的部分。 直接短语:符号串推导过程中某非终结符一步推导的部分。句柄:一个句型的最左直接短语。最左归约是最有推导的逆过程。 2.整个编译过程可以划分为五个阶段以及编译各阶段的任务;另外还有两个处理过程。 3.不会有很多人会从事设计和编写编译程序的工作的,但编译技术会应用在很多领域。 1.已知文法G,判断VN=?,VT=?,判断某个符号串是否为该文法描述的句子。 2.已知文法G,写出它定义的语言描述; 3.已知文法G,给出其句子的各种形式的推导,会画出语法树; 4.文法二义性的判断——利用语法树:在文法G中去寻找某一个句子,能够给它画出两个不同的语法树。 1.词法分析的任务。 2.单词的概念与单词的分类以及输出方式。 3.弄懂一些重要的概念: 正规文法G、正规式r和确定有限自动机DFA和不确定有限自动机NFA。 4.会画出FA对应的状态转换图。 5.弄懂词法分析器的自动生成原理: 1.语法分析的任务; 2.确定的自顶向下语法分析方法的基本思想,存在的问题是:左递归和回溯; 3.分析方法:预测分析法。 1.自底向上语法分析方法的基本思想; 2.短语、直接短语和句柄底定义,以及如何利用语法树来寻找某个句型的所有的短语、直接短语和句柄; 3.自底向上语法分析方法: ①算符优先分析法:基本原理,识别句柄的方法,最左素短语。 ②LR分析法:活前缀,LR(0)项目,LR(0)分析法,SLR(1)分析法。 语义分析与中间代码生成的任务。 弄清属性文法的概念。 弄清语法制导翻译的概念。 掌握常用的中间代码形式:逆波兰式和四元式。 掌握一般语法成分,如赋值语句,条件语句,循环语句和简单说明语句等结构的翻译。 数据空间的内容; 数据空间的三种分配策略; 临时变量的存储分配。 优化的分类; 常用的代码优化技术; 局部优化。 1.目标代码的形式 ; 2.目标机的指令系统; 编译原理课程是计算机专业必修的一门重要的专业基础课程,也是计算机系统软件中非常重要的一个分支,经过多年建设取得了丰硕的教学成果:2003年被评为“吉林大学百门精品课程”之一,2004年被评为吉林省精品课程,2006年被评为教育部—微软精品课程。编译原理实践课程建设作为新世纪教学改革重点项目和编译原理精品课程建设的一个重要组成部分,在教材建设、教学内容和教学方法的改革等方面也取得了较突出的成绩,并发表了多篇学术论文。 一、实验课程目的 编译原理课程是计算机科学与技术专业学生的专业骨干课之一。通过学习这门课程,使学生掌握编译程序的基本原理、方法和实现技术,使学生更好的理解程序语言的内部机制,培养学生初步掌握设计大型系统软件的方法、技术以及设计大型软件的能力。 编译原理实践性教学的设计思想是使学生透彻的理解编译程序的原理和思想,系统全面的掌握编译技术,使学生通过课堂学习,理解编译原理的同时,注重学生实践能力的培养,进一步巩固对知识的理解,通过实际的锻炼,掌握编译技术,进而能够独立的进行编译器的设计。 二、实验内容及要求 编译程序不同于一般的应用程序,是一个十分庞大和复杂的系统软件。一般的应用程序是以数据作为操作对象,而编译程序则是以程序作为操作对象,是一个元级处理程序,它所包含的算法和思想比较特殊,理论性较强,抽象度也较高,因而编译原理课程一直以来都是计算机专业学生比较难于理解和掌握的一门课程。为此我们开设编译原理实践课程。编译原理实践课程的主要实践题目有: 实验一: 词法分析程序开发 实验要求: 1.掌握词法分析程序自动生成工具LEX的使用。 2.掌握各类单词的形式描述。 3.学会用数据中心法实现有限自动机。4.学会用直接转向法实现有限自动机。5.独立完成SNL语言的词法分析器。 实验二: 递归下降语法分析 实验要求: 1.理解递归下降语法分析方法的主要原理。 2.理解递归下降分析法对文法的要求。 3.熟练掌握Predict集合的求法。 4.熟练掌握文法变换算法(消除左递归和消除公共前缀)。实验三: LL(1)语法分析 实验要求: 1.理解LL(1)分析法的主要原理。 2.理解LL(1)分析法对文法的要求。 3.熟练掌握Predict集合的求法。 4.通过编程熟练掌握LL(1)分析法的工作过程。实验四: 符号表管理 实验要求: 1.了解符号表在编译过程中的重要作用。 2.掌握符号表应包含的符号的属性信息。3.了解符号表的组织原则。4.掌握符号表的操作。 5.掌握符号表的可见性问题。 实验五: 语义检查 实验要求: 1.了解语义检查是语义分析的一个重要内容。 2.掌握语义检查的一般内容。 3.学会在语法分析的同时进行语义检查。4.学会将语义分析作为一遍独立的扫描。 实验六: 中间代码生成 实验要求: 1.了解中间代码生成是为优化和移植而进行的。 2.了解几种常见中间代码表示形式掌握符号表应包含的符号的属性信息。 3.会用简单的程序实现中缀式到后缀式的转换。4.会用栈实现复杂表达式的求值。 5.掌握常见程序结构的中间代码结构。 6.掌握由语法树到四元式中间代码的转换方法。 实验七: 中间代码优化 实验要求: 1.能够对中间代码正确划分基本块。 2.理解常量表达式局部优化算法。 3.理解公共表达式局部优化算法。 4.理解循环不变式外提优化算法。实验八: 目标程序生成 实验要求: 1.熟练掌握虚拟机的指令系统。 2.理解并掌握指令选择的方法。 3.理解多寄存器分配的原则和方法。 4.熟练掌握基本语句从四元式中间代码形式到目标代码的翻译原理和方法。 5.独立完成目标代码生成程序。 三、实验教学过程及教学手段 教学过程: 经过近三年的研究、探索与实践,我们在编译原理实践课程的建设方面取得了一定成效。在吉林大学计算机学院首次开设了编译原理实践课程,该课程以学生实际上机实习为主,教师指导为辅,强调启发式教学,注重学生自学能力的培养。学生在实践课程中,通过实际动手编程,将抽象的编译理论知识具体化和形象化,加深了对基本概念和方法的理解和运用,从而全面系统地掌握了编译器的构造过程。 该课程采用教研室自编实践教材《编译程序设计与实现》(高等教育出版社)作为辅导教材,通过对教材中提供的编译实例的透彻解析,加深了学生对编译程序的直观认识,提高了学生对源程序的分析和设计能力。同时,对学生学习、理解和掌握编译原理理论课程也有很大的促进作用。在课程中,学生通过亲自动手实践,把原理性的抽象理论知识具体化和形象化,消化了课堂上、书本中难于理解的概念和方法,全面系统的掌握了编译器的构造过程,激发了学生的学习兴趣,培养了学生进行更深入学习的主动性。在教学方法上,结合多媒体课件,强调启发式教学,培养学生的创新能力和动手实践能力。实践证明,这些教学方式的尝试在实际教学中取得了良好的教学效果。 教学环境: 拥有良好的实践教学环境,已建成3个大型网络化、多媒体微机实验室,共有800台奔IV微机,32台服务器,实验室面积为2040平方米,完全能够满足教学实践要求,通过开放式的实践教学,收到了良好的教学效果。除实践课程中规定的实验之外,还设计了一些难度较大的选作实验题目,激发学生的能动性,提高学生分析问题、解决问题的能力。教学手段: 1.多媒体辅助教学软件-PCMCAI(Principle of Compile Multimedia CAI)在教学过程中,我们发现由于编译原理理论性强,抽象度高,学生不易于理解。针对这一情况,我们研制了编译原理多媒体辅助教学软件-PCMCAI(Principle of Compile Multimedia CAI),该软件以多媒体动画的形式生动形象地描述了编译器的各个阶段的工作过程。借助现代化的教学手段和工具,将抽象的知识具体化,便于学生理解复杂的原理,极大地调动了学生的学习积极性,学习效果有了明显的提高; 2.编译实例库 我们完成了编译实例库的构建,建立实例库的目的是使学生通过编译实例库,可以了解和掌握不同类型语言的编译原理和构造技术,培养学生的主动参与、自主思考和创新能力,扩大学生的知识面。通过实践课程,我们总结和综合了学生中优秀的设计实例,同时,广泛的收集当前国内外最新的素材资料,对编译实例库不断地进行完善。目前,实例库已经初具规模并投入使用,为学生提供了广泛的实践素材和范例,在教学过程中作为一种辅助教学手段,效果良好。 3.网络教学平台:http://softlab.jlu.edu.cn 针对目前学生人数增多,教学资源不足,学生质量参差不齐,教学质量和效率得不到保证的情况,我们充分利用Internet,建立和实施网络课程体系,利用Internet在信息制造、贮存和递送方面的优势,克服资源不足的缺点,同时也为学生提供了完全个性化的学习环境,发挥网络教学优势。目前我们已经开始了这方面的建设,完成了编译原理实例库、课件、习题库等方面的建设,构建了网络课程的框架体系,目前正着手网络课程的进一步完善工作。 四、教材及课件 教材建设: 1.校内教材:《一个教学语言TINY的编译程序教学实例分析教材》(2001年6月)。2.校内教材:《编译程序构造原理与实例分析》(2003年2月)。3.编译原理实践教材:《编译程序的设计与实现》(高等教育出版社,2004年7月)。 教学软件: 1.多媒体辅助教学软件-PCMCAI(Principle of Compile Multimedia CAI)。2.SNL(Small Nested Language)语言实例设计及其编译器构造。3.编译原理实例库(C语言版本)。4.编译原理实例库(Java语言版本)。 五、相关成果 发表论文: 1.《编译原理实践课程设计的探索》,刘磊等,吉林大学新世纪教学改革项目研究成果----创新、改革与实践 第一集 吉林大学出版社。2.《用递归下降方法实现自底向上的分析》,刘磊等,吉林大学学报(信息科学版),2004(3)。 3.《编译原理多媒体辅助教学软件的设计与实现》,刘磊等,吉林大学自然科学学报,2002(2)。 4.《测试语言ATLAS的实现技术》,刘磊等,仪器仪表学报,2004(4)。5.《ATLAS_MPS的设计与实现》,刘磊等,吉林大学学报,2004(4)。6.《编译原理实践课程教学方法研究》,张晶等,全国首届计算机程序设计类课程教学研讨会,2005(9)。7.《“编译原理”课程建设研究》,刘磊等,计算机教育,2006(6)。获得奖励: 1.2004年,《编译原理实践课程建设》,吉林大学教学成果二等奖。2.2006年,《编译程序的设计与实现》一书获吉林大学本科优秀教材。3.2002年,编译原理CAI课件-PCMCAI获被吉林省教育厅评为二等奖,并在第六届全国多媒体教育软件大奖赛上获得优秀奖。 4.《编译原理》课程先后被评为吉林大学精品课程、吉林省精品课程及教育部-微软精品课程。 总之,经过多年的研究、探索与实践,我们在编译原理实践课程的建设方面取得了一定成效。在吉林大学计算机学院首次开设了编译原理实践课程,该课程以学生实际上机实习为主,教师指导为辅,强调启发式教学,注重学生自学能力的培养。学生在实践课程中,通过实际动手编程,将抽象的编译理论知识具体化和形象化,加深了对基本概念和方法的理解和运用,从而全面系统地掌握了编译器的构造过程。该课程采用我们自编实践教材《编译程序设计与实现》作为辅导教材,通过对教材中提供的编译实例的透彻解析,加深了学生对编译程序的直观认识,提高了学生对源程序的分析和设计能力。同时,对学生学习、理解和掌握编译原理理论课程也有很大的促进作用。在教学方法上,结合多媒体课件,强调启发式教学,培养学生的创新能力和动手实践能力。实践证明,这些教学方式的尝试在实际教学中取得了良好的教学效果。 课程名称: 课程编号: 适用专业: 总 学 分: 总 周 时: 主 撰 人: 撰写日期: 一、目的与任务 通过程序设计上机调试程序实现算法,学习编译程序调试技巧和设计编译程序的一般原则,加深对词法分析、语法分析、语义分析和中间代码生成等编译阶段及实用编译系统的认识,初步掌握编译程序构造的基本原理与技术, 从形式语言理论的角度, 进一步认识与理解程序设计语言。通过编译程序的编写和调试能力的训练,激发学生进一步思考问题,培养学生的学习兴趣和创新能力。并进一步培养学生的抽象思维能力,进一步巩固《编译原理》课程所学知识。 本次课程设计的时间为2周,目的是通过实际的题目如:词法分析、语法分析、代码优化等,使学生了解和掌握编译程序的工作原理,同时培养学生用相关的程序设计语言进行程序设计,实现编译的功能,从而提高学生的综合能力。 二、教学基本要求 1.设计和调试过程要规范化 需求分析:将题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,(有些题目已经指定了数据存储的,按照指定的设计),设计或叙述解决此问题的算法,描述算法可以使用自然语言、伪代码、或函数的方式。 给出实现功能的一组或多组测试数据(测试文法),程序调试后,将按照此测试数据进行测试的结果列出来。 如果程序不能正常运行或运行过程中出现了不满足算法思想的情况,写出出现这一情况的原因或改进行的方法。 源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 程序能够运行,要有基本的容错功能。尽量避免出现操作错误时出现死循环。2.课程设计实习报告的书写格式 编译原理 436105 软件工程 2W 2012.6 审 核 人: ① 设计题目 ②运行环境(软、硬件环境)③算法设计的思想 ④算法设计分析 ⑤主要函数 ⑥源代码 ⑦运行结果分析 ⑧收获及体会 3.实施方式 本次课程设计分成9个题目,都有一定的工作量,涵盖本课程内容和实际应用相关的主要技术,学生可以自由组队选择其中一个实现。课程设计题目见“主要内容”。 根据老师给定的9个题目进行分析设计,本次课程设计采取分组的办法进行,3-4人为一组,要求每组学生在规定时间内独立完成。4.答辩:课题的论述、测试及问题回答 三、课程设计内容 1、词法分析器的构造: 人们理解一个程序,起码是在单词级别上来思考。同样,在编绎一个程序时,也是在单词级别上来分析和翻译源程序。词法分析是编绎的基础,执行词法分析的程序即为词法分析器,它的任务是对输入或给定的源程序,从左至右逐个字符进行扫描,产生一个个单词符号,把作为字符串的源程序改造成单词符号串的中间程序。设计目的与任务: 通过本课程设计教学所要求达到的目的是:对词法分析工作流程进行总体设计和详细设计,最终用C语言来设计一个简单词法分析器,实现对源程序的词法分析功能,对输入程序去除注释,并以二元式形式输出程序中所有单词。 2、正则表达式到NFA 在编译系统中,词法分析阶段是整个编译系统的基础。对于单词的识别,有限自动机FA是一种十分有效的工具。有限自动机由其映射f是否为单值而分为确定的有限自动机DFA和非确定的有限自动机NFA。在非确定的有限自动机NFA中,由于某些状态的转移需从若干个可能的后续状态中进行选择,故一个NFA对符号串的识别就必然是一个试探的过程。这种不确定性给识别过程带来的反复,无疑会影响到FA的工作效率。而DFA引擎在任意时刻必定处于某个确定的状态,它搜索是无需象NFA一样必须记录所有的可能路径(trace multiple possible routes through the NFA),这也是DFA运行效率高于NFA的原因。而已经证明DFA是NFA的一个特例,即对于每一个NFA M存在一个DFA M’’,使得L(M)=L(M’’)。 设计目的与任务 通过本课程设计教学所要求达到的目的是:充分理解和掌握NFA,DFA以及NFA确定化过程的相关概念和知识,编程实现对输入的任意正规式转换成NFA的形式输出。 3、NFA的确定化 有限自动机理论是描述词法规则的基本理论。一条词法规则表示一个正规表达式(又叫正规式),而一个正规式又可化为一个DFA(确定有穷自动机),这个有限自动机可用来识别词法规则所定义的所有单词符号。把程序设计语言的所有词法规则都构造出相应的有限自动机,就得到一个词法分析器。然后,再转换为计算机可识别的程序就能自动实现词法的分析和检查。在实际应用中,用NFA(不确定有穷自动机)识别词法存在不确定和状态的冗余,因而,就要将NFA(不确定有穷自动机)转换为DFA(确定有穷自动机),消除了不可到达和不确定。设计目的与任务 通过本课程设计教学所要求达到的目的是:掌握从NFA到DFA的转换,以及用子集法把NFA转换成DFA理论,编程实现将NFA(不确定有穷自动机)转换为DFA(确定有穷自动机)。 4、DFA的最小化 确定性有限自动机(DFA ,Deterministic Finite Automata)的最小化仍是有限自动机应用及实现方面的重要问题之一。DFA的最小化可以揭示状态之间的内在联系,便于其存储实现,便于建立用DFA描述的任务模型,一些理论问题也与最小化思想有关。DFA的最小化是指,构造一个与之等价且状态数最小的DFA,即等价最小DFA。许多文献给出了一个最小化算法,算法的思想是,构造状态集的一个划分,再将这个划分中的每个子集作为新的状态,从而得到等价最小DFA。 DFA的最小化可以揭示状态之间的内在联系,便于其存储实现,便于建立用DFA描述的任务模型,一些理论问题也与最小化思想有关。 5、语法分析之LL(1)文法 通过该课程设计了解了程序语言的自上而下的语法分析过程,提高了编程能力,能使我们了解编程语言更多的细节 设计目的与任务(1)读入文法(2)求出first(), follow()(3)判断是否为LL(1)文法 (4)若是,构造分析表; (5)输入一个字符串看是否是文法的一个句子。 6、算符优先文法 一个文法,如果它的任一产生式的右边都不含有两个相继(并列)的非终结符,即不 含有如下形式的产生式的右部: „QR„ 则我们称该文法为算符文法。 假设文法中的任意两个终结符之间最多只有一个优先关系,则该文法称为算符优先文法。 该课程设计按照求,(P),(P)各两条规则,求出各非终结符的集。然后按照算符优先算法求出各终结符的算符优先关系,填写算符优先表,并将其输出。 7、LR(0)分析表的构造 LR分析技术是一种有效的自下而上分析技术,是一种规范归约,其中L表示从左到右扫描输入串,R表示构造一个最右推导的逆过程。这种方法可以适用于很大一类上下无关文法的语法分析。LR方法的基本思想是:在规范归约过程中,一方面记住已经移进和归约出的整个符号串,即记住“历史”;另一方面根据所用的产生式推测未来可能碰到的输入符号,即对未来进行“展望”。当一串貌似句柄的符号串呈现于分析栈的顶端时,我们希望能够根据所记载的“历史”和“展望”以及“现实”的输入符号等三方面的材料,来确定栈顶的符号传是否构成相对某一产生式的句柄。 LR分析器的核心部分是一张分析表。这张分析表包括两部分,一是“动作”(ACTION)表,另一是“状态转换”(GOTO)表。对于一个文法,如果能用一个每步顶多向前检查K个输入符号的LR分析器进行分析,则这个文法就称为LR(K)文法。本文研究的LR(0)文法即K=0时的文法。 设计目的与任务 本课程设计所设计目的与任务是:通过C语言程序实现LR(0)分析表的构造,熟练掌握LR(0)分析表的构造方法,即利用拓广文法和构造项目集规范族的方法。了解LR(0)分析器的工作原理,并能利用LR(0)分析表对输入串进行分析。 8、逆波兰表达式生成算法 虽然源程序可以直接翻译为目标语言代码,但许多编译程序采用了独立于机器的、复杂性介于源语言和机器翻译语言之间的中间语言:后缀式(逆波兰表达式)等。这样做的好处是: (1)便于进行与机器无关的代码优化工作;(2)使编译程序改变目标机更容易; (3)使编译程序的结构在逻辑上更为简单明确。以中间语言为界面,编译前端和后端的接口更清晰。设计目的与任务 将非后缀式用来表示的算术表达式转换为用逆波兰式来表示的算术表达式,并能运行查看结果。 9、表达式的中间代码生成 源程序可以直接翻译为目标语言代码,但是许多编译程序却采用了独立于机器的、复杂性介于源语言和机器语言之间的中间语言。这样我们可以做下面工作: (1):便于进行与机器无关的代码优化工作;(2):使编译程序以改变目标机更容易;(3):使编译程序的结构在逻辑上更为简单明确; 而以中间语言为界面,编译前端和后端的接口更清晰,表达式可以用四个域分别称为OP、ORG1、ORG2及RESULT来表示。 四、时间安排 《编译原理课程设计》安排在第三学期进行,时间2周(17-18周)。 五、组织管理 1.由院、系指派经验丰富的专业教师担任指导教师。 2.课程设计实行指导教师负责制,由指导教师全面负责课程设计的指导与管理工作。 六、成绩考核与评定 学生课程设计结束后写出总结报告,对设计的内容和效果进行总结,按照学生在设计期间的表现,指导老师对每位学生写出评语和鉴定,系课程设计领导小组组织答辩,最后确定每位学生课程设计成绩,课程设计成绩分为优、良、中、及格和不及格五个等级。课程设计成绩为平时表现30%、设计报告50%、答辩20%。评分标准: ① 优秀:目的明确,态度端正,模范遵守学校的各项纪律。工作认真,积极 主动,吃苦耐劳,能出色的完成设计任务。撰写了高质量的总结报告。答辩准确流利。 ② 良好:目的明确,态度端正,能遵守学校的各项纪律,工作比较积极主动。能较好地完成设计任务,成绩较突出,表现良好;撰写了质量比较高的实习报告。答辩较准确流利。 ③ 及格:目的明确,态度基本端正,能遵守学校纪律,在督促下能开展工作 并完成一定的设计任务,无大的违纪违规现象;撰写了实习报告。通过了答辩。 ④ 不及格:实习态度端正,不能遵守实习单位的纪律,不服从领导,自由散漫,工作消极被动,不能完成实习任务,实习期间有失职、旷工、打架、酗酒等大的过失。或无实习报告,没有通过答辩。 2.成绩评定 依据上述考核内容,最后采用优(>90分)、良(80~89分)、中(70~79分)及格(60~69分)、不及格(<60分)五级记分制评定学生课程设计成绩。 七、主要参考资料 教材: 《编译原理及实践》冯博琴等译,机械工业出版社 教学参考书 1、《程序设计语言与编译》龚天富、侯文永编,电子工业出版社。 2、《编译原理》吕映芝、张素琴、蒋维杜主编,清华大学出版社,1998年 3、《编译原理》胡伦骏、徐兰芳、刘建农编,电子工业出版社2002年 4、《编译原理》(第二版)蒋立源、康慕宁主编,西北工业大学出版社,2002年 5、《编译原理习题精选》陈意云、张昱著,中国科技大学出版社,2002年 6、《编译原理习题与解析》 伍春香著,清华大学出版社,2001年 《编译原理》课程设计 1.要求 完成一个简化C语言——TINY C语言的编译程序,最终能为用TINY C语言编写的源程序(后缀为.tny,已给sample.tny,用一般的文本编辑程序即可打开)生成目标代码,并在给定的虚拟机TM上运行得到运行结果。 TINY C语言中允许出现的字词: 整数、标识符; 算术运算符/关系运算符/赋值运算符/界符:+、-、*、/、=、<、:=、;、{、}、(、) 其它保留字:IF THEN ELSE END REPEAT UNTIL READ WRITE TINY C语言中允许出现的语法单位 表达式:简单整型算术表达式、关系表达式 语句: 条件语句(IF THEN ELSE END) 循环语句(REPEAT UNTIL) 赋值语句(:=) 读写语句(READ WRITE) { }中可以有注释,但不能嵌套 2.步骤 1)、词法分析 2)、语法分析 3)、语义分析 4)、生成目标代码 3.源码构成 MAIN.C 主程序 GLOBALS.H 全局类型及变量(如Token类属及语法树结点的组成) UTIL.H、UTIL.C 各步骤的实用函数。如输出Token,生成语法树结点等 SCAN.C、SCAN.H 词法分析程序及其头文件 PARSE.C、PARSE.H 语法分析程序及其头文件 ANALYZE.C、ANALYZE.H 语义检查程序及其头文件 SYMTAB.C、SYMTAB.H 符号表生成程序及其头文件 CGEN.H、CGEN.C、CODE.C、CODE.H 目标代码生成程序及其头文件 《编译原理》课程设计 TM 编译sample.tny源程序后得到目标代码,在该虚拟机上运行得到结果 步骤1——词法分析 要求:填写getToken()函数,完成词法分析器scan.c。约定: 仅允许整数类型,不允许实数类型 标识符由大小写英文字母组成,最多52个。其识别按最长匹配原则 整数后紧跟非数字,或标识符后紧跟非字母认为是一个新Token开始 由{ }括起来符号串都认为是注释部分,该部分在词法分析时被过滤掉 识别出的Token由两个变量:currentToken,tokenString识别,其中currentToken代表Token的类属,为一个名为TokenType的枚举类型,在文件globals.h中定义;tokenString代表Token在程序中出现的形式,即其本来面目。例如整数10的currentToken值为NUM,而tokenString值为‘10’;标识符i的currentToken值为ID,而tokenString值为‘i’ typedef enum { ENDFILE,ERROR,IF,THEN,ELSE,END,REPEAT,UNTIL,READ,WRITE,/* 保留字 */ ID,NUM, ASSIGN,EQ,LT,PLUS,MINUS,TIMES,OVER,LPAREN,RPAREN,SEMI := = < + * / () ; } TokenType; 画识别符合TINY C语言构词规则的DFA。然后用直接编码的方法构造词法分析器 /****************************************************/ /* File: scan.c */ /* The scanner implementation for the TINY compiler */ /****************************************************/ #include “globals.h” #include “util.h” #include “scan.h” typedef enum { START, INASSIGN, INCOMMENT, INNUM, INID, DONE } StateType; 《编译原理》课程设计 char tokenString[MAXTOKENLEN+1];static int getNextChar(void) //获得下一字符 {实现请自己看scan.c文件} static void ungetNextChar(void) //用于回吐字符 {实现请自己看scan.c文件} static struct { char* str; TokenType tok; } reservedWords[MAXRESERVED] = {{“if”,IF},{“then”,THEN},{“else”,ELSE},{“end”,END},{“repeat”,REPEAT},{“until”,UNTIL},{“read”,READ},{“write”,WRITE}}; //定义保留字表 static TokenType reservedLookup(char * s) //进行保留字的匹配 {实现请自己看scan.c文件} /**********************************************/ /* the primary function of the scanner */ /* function getToken returns the next token in source file */ /**********************************************/ TokenType getToken(void){ int tokenStringIndex = 0; TokenType currentToken; //保存被识别Token的类属 StateType state = START; //初始状态为START int save; //标识当前字符是否保存,如空格,换行符n、TAB符t及注释中的任何字符 while(state!= DONE) //DONE状态表示已识别出一个Token { int c = getNextChar(); save = TRUE; switch(state) { case START: if(isdigit(c)) state = INNUM; else if …… //此处请自己填写(字符、:、空格/tab/换行、{、算符及界符等) break; case INCOMMENT: …//此处请自己填写,仅出现‘}’或EOF(注释未完结束程序)时才改变状态。 break; case INASSIGN: …… //此处请自己填写,‘=’或其它(出现错误) 《编译原理》课程设计 break; case INNUM: if(!isdigit(c)) { /* backup in the input */ ungetNextChar(); save = FALSE; state = DONE; currentToken = NUM; } break; case INID: …… //此处请自己填写,不是字符则回吐,并进入DONE,且识别出一个ID break; case DONE: //不可能到 default: /* should never happen */ fprintf(listing,“Scanner Bug: state= %dn”,state); state = DONE; currentToken = ERROR; break; } if((save)&&(tokenStringIndex <= MAXTOKENLEN)) tokenString[tokenStringIndex++] =(char)c; if(state == DONE) { tokenString[tokenStringIndex] = '; if(currentToken == ID) currentToken = reservedLookup(tokenString); } } ---------end WHILE if(TraceScan){ fprintf(listing,“t%d: ”,lineno); printToken(currentToken,tokenString); } 课程编号:07114180 适用专业:计算机科学与技术系计算机应用专业(软件本科) 学时数:34(理论学时数:10 实验或讨论学时数:48)学分数:2 执笔者:周有顺 编写日期:2004年2月 执行时间:2003年以后入学的年级 一、课程的性质和目的 编译原理实践设计是计算机科学与技术专业学生的专业必修课。 系统软件是计算机系统的重要组成部分。本课程是在学习系统软件的组成、设计原理和实现方法的基础之上,设计并上机实现部分系统软件----编译程序。目的在于完成相关课程从理论到实践的推进,使学生真正掌握计算机信息处理的实质,提高其专业素质及驾驭各种系统软件和应用软件的能力。 二、课程教学内容 编译程序设计与实现的目的: 了解编译程序的组成及各部分的基本任务; 掌握编译程序各部分的设计原理和实现方法; 体会理论内容与具体实践之间的关系。 第一章 课堂教学内容要点 (1)编译过程概要:(4学时) 词法分析、语法分析、语义分析及中间代码生成、目标代码生成等各部分的具体实现算法;符号表管理、错误信息处理的具体实现方法;上述各部分之间的数据及信息的传递与交流。 (2)编译程序实现途径(6学时) 编译程序的书写语言与T型图;编译程序的自展技术;编译程序的构造工具。 第二章 实践内容概要(上机部分)(24学时) (1)实验型语言源文法(略)。(2)编译程序的设计目标 ①设计该语言的词法分析程序和语法分析及语义分析程序,词法分析程序和语法分析程序分别作为一遍编写,并生成二元式和中间代码四元式形式。 ②在语法分析中,对各语句和布尔表达式的分析采用递归下降分析,对算数表达式的分析采用算符优先分析。 ③程序中应包括符号表管理和简单的出错处理。词法分析出错处理包括非法字符和非法单词;语法分析出错处理包括简单的语法错误,即程序结构不符合语法规则的错误。 ④将中间代码四元式生成8086/8088汇编语言的目标代码形式。(选做)(3)程序调试 用上述语言编写程序,求函数的值。(4)文档要求 ①画出该语言文法的语法图。 ②写出编译程序中所使用的主要数据结构(二元式表,四元式表和符号表)。③给出该语言的编译程序的各模块的结构图。 ④调试上述程序,并分别给出无错误信息和有错误信息的调试结果,即二元式表和四元式表。 三、课程教学的基本要求 本课程是编译原理的后续课程,完成课程的实践部分。因此教学上应着重强调理论与实践的关系,理论内容如何付诸实践,如何利用理论知识去解决实际问题等,以达到学生实践能力的提高。 Project for Compiler System 四、本课程与其它课程的联系与分工 先修课程:汇编语言,操作系统,编译原理等 五、建议教材与教学参考书 [1] 蒋立源,《编译原理》,西北工业大学出版社,1997 [2] ZXJ10数字程控交换机 实验报告 专业班级:09通信工程2班 姓名: 学号: 指导老师: 2012年6月10日 一.实验目的: 1.系统配置及告警局使用: 熟练掌握交换机局容量的数据配置,数据配置,物理配置,后台告警查看系统告警信息。2.用户配置与操作: 熟练掌握本局用户数据的定义(包括定义用户号码,放号等),本局号码分析数据的制作,修改用户属性的数据,本局用户新业务的使用。 二、实验设备: 硬件:PC 机,电话机,中兴ZXJ10交换机 软件:中兴交换机后台管理系统 三.实验内容及步骤: 1.局容量配置: 1.首先打开[数据管理]→[数据备份]把D盘的空数据进行恢复,如图一,然后数据清空。2.打开[数据管理]—>[基本数据管理]—>[局容量配置],如图二,进入容量规划的页面。3.点击[全局规划],进入全局容量规划的页面,选择“全局容量规划参考”为“正常全局容量配置”,如图三,点击“全部使用建议值”并“确认”,回到容量规划的页面。4.点击增加,进入增加模块容量规划的页面,“模块号”键入“2”,如图四,点击“全部使用建议值”。最终返回出现如图五的界面,选择退出,局容量配置完毕。 2.2.交换局配置: 1.打开[数据管理]—>[基本数据管理]—>[交换局配置],如图一,进入交换局配置的页面。 2.点设置,进入如图二,设置数据如下:交换局名称,测试码,长途区内序号,催费选择子,来话忙音提示号码,转接平台局码,转接平台密码,主叫智能接入码,被叫智能接入码都填写1,国家代码写86,交换局编码写755,基本网络类型为公众电信网,本局网络的CIC码为中国电信,交换局类别选市话局和国内长话局,信令点类型为信令端接点,设置完后点击确定,则交换局配置完毕。 3.物理配置: 1.打开[数据管理]—>[基本数据管理]—>[物理配置]—>[物理配置],如图一,进入物理配置的界面。 2.点击<增加模块>,进入[新增模块]的页面,对于PSM单模块成局,设置[模块号]为2,如图二,再选上8k外围交换模块,点击<确认>,返回物理配置的页面。3.选中模块2,点击<新增机架>,进入[新增机架]的页面,如图三,点击<确认>返回物理配置的页面。 4.机架1,点击<新增机框>,进入新增机框的页面,逐个增加机框,从1到6共六个之后,返回物理配置的页面,如图四。 5.选种对应的机框,点击<机框属性>,进入单板的配置界面,根据不同机框类型的参考配置和机架上的实际板位,配置单板。如图五,图六,图七,图八,配置完后,返回物理配置的页面。 6.选中模块2,点击通讯板配置,在[选择通信板]栏选中15,16(MPPP),点击缺省配置通讯板,如图九,点击返回,返回物理配置的页面。 7.选中模块2,点击<单元配置>,进入[单元配置]的页面,增加单元。首先点击<增加所有无HW单元>,如图十。然后点击<增加>,进入[增加单元]的界面,增加占用HW的单元,首先选择[单元编号],设定好[单元编号]和[单元类型]后,在[本模块可供分配的的单元项]中就会出现相应的物理项,用<转移项>将该项转移到[分配给此单元的单元选项列表]中,再依次配置[子单元配置],[HW线配置],[通信端口配置]。三项配置如下: ① 元编号1:单元类型:交换网单元,端口号设置:使用缺省值。 ② 元编号2:单元类型:用户单元,分配给此单元的单元项:机框1,单元HW线配置: 网号为1,物理HW号分别为24,25,端口号设置:使用缺省值。 ③ 元编号3:单元类型:数字中继单元,子单元配置:四个全选,勾选暂不使用,单元HW线配置:网号为1,第一条物理HW号为20,端口号设置:使用缺省值。 ④ 元编号4:单元类型:模拟信令单元,分配给此单元的单元项为机框5的槽位6,子 单元配置:双音多频,单元HW线配置:网号为1,第一条物理HW号为22,端口号设置:使用缺省值。 ⑤ 单元编号5:单元类型:模拟信令单元,分配给此单元的单元项为机框5的槽位7,子单元配置:音子单元,单元HW线配置:网号为1,第一条物理HW号为23,端口号设置:使用缺省值。 4.数据传送: 数据传送的的目的是将后台配置的数据传送到前台MP中,选择[数据管理]—>[数据传送],进入数据传送的界面,选择传送方式为[传送全部表],点击<发送>即可。 5.告警信息查看: 选择[系统维护]—>[后台告警],进入告警后台客户端,左侧窗口显示以局、模块、机架为节点的配置树,使操作员对本局的配置一目了然。 6.号码管理: 1.选择[数据管理]—>[基本数据管理]—>[号码管理]—>[号码管理],进入[号码管理] 的页面。 2.增加局号。如图一。选择网络类型[公众电信网],点击<增加局号>,[局号索引]为1,键入[局号(PQR)]222,[号码长度]键入7,点击<确定>,返回[号码管理]的页面。 3.分配百号。如图二。点击<分配百号>,选择刚刚创建的局号222和模块号2,将其中一个“22”转移至右侧,点击<返回>回到号码管理的页面,百号分配完毕。4.用户号码放号。如图三。在号码管理的页面,点击<放号>,进入[号码分配]的页面,在[号码范围]选择222,[百号]选择22,模块2,机架1,机框1,普通用户线,在[放号数目]域填入70。 7.号码分析: 1.选择[数据管理]—>[基本数据管理]—>[号码管理]—>[号码分析],到[号码分析]界面。 2.增加分析器。如图一,在[分析器入口]的子页面,点击<增加>,创建两个分析器:新业务分析器和本地网分析器。然后选中<本地网分析器>,点击<分析号码>钮,进入本地网分析器入口。点击<增加>,进入[增加本地网被分析号码]的窗口,设置如下:被分析号码222,呼叫业务类型:本地网本局/普通业务,局号索引为1,目的网类型:公众电信网,分析结束标志:分析结束,不在分析,话路复原方式:互不控制复原,号码流最少和最长位长都为7。 3.增加号码分析选择子。如图二和图三。回到号码分析选择子的子页面,点击<增加>,“新业务分析器”和“本地分析器”的入口标志分别选择刚刚创建的两个分析器的入口值(如1和5),点击<确认>钮。 8.修改用户属性: 1.定义用户属性模板。如图一。选择[数据管理]>—>[基本数据管理]—>[用户属性],进入[用户属性定义]的界面。用户也可以自己定义新的模板。选中[普通用户缺省]模板,在[基本属性]子页面中选择[用户类别]:普通用户;[号码分析子(普通)]:222;[计费类别]:定期计费; [终端类别]:勾上音频允许,脉冲允许,可以显示主叫号码,分组交换设备;同时放开开通权限。在呼叫权限子页面中选择常用权限模板定义普通权限,欠费权限模板定义欠费权限。点击<确定>。 2.定位用户。如图二。选择[用户属性定义]—>[需要配置的用户定义],定义用户的属性,选择手工批量输入:选择[手工输入,批量输入],选中[模块号]、[局号]、[用户类别]为普通用户,选中百号组和其下的一批号码,转移到右边,点击<确定>,系统自动切换到<属性配置>子页面。 四.实验结果: 局号为222,百号为22,放号为70,所以当拨打2222218的时候,2222218的电话声响起,实验成功。 五.实验心得体会: 本实验一开始做的时候困难重重,第一次验收的时候电话一拨打就出现忙音,经检查发现是用户属性定义出现问题,分组交换设备没有勾选上。分组交换是现代交换原理的重要内容,现在很多交换机采用分组交换。之所以选择分组交换是因为它具有不同数据终端之间灵活沟通,时延小,满足数据交互业务要求,而且可靠性高,网络费用低的优可以拨号且正常通话,实验成功。 【编译原理实验报告总结】推荐阅读: 编译原理实验报告分析05-29 编译原理重点总结10-09 编译原理课程教学05-26 编译原理实用论文08-22 《编译原理》课程设计要求05-26 编译原理作业标准答案09-21 编译原理教学方法论文09-01 安徽师范大学《编译原理实践》课程教学大纲10-23 叠加原理实验报告10-26 通信原理实验报告格式08-23编译原理实验报告总结 篇2
编译原理概念期末总结复习 篇3
编译原理各章小结 篇4
编译原理课程设计简介 篇5
《编译原理课程设计》教学大纲 篇6
编译原理实验报告总结 篇7
编译原理实验报告总结 篇8
现代交换原理实验报告 篇9