文档库 最新最全的文档下载
当前位置:文档库 › 徐国庆:项目课程的概念、原理与设计

徐国庆:项目课程的概念、原理与设计

徐国庆:项目课程的概念、原理与设计
徐国庆:项目课程的概念、原理与设计

项目课程的概念、原理与设计

徐国庆

本篇依据徐国庆在中国职业技术教育学会教学工作委员会课程理论与开发研究会2007年学术年会暨职教课程开发理论与实践研讨会上的讲话录音整理

项目课程改革从我们开始探索到现在为止时间大概是三年左右,那么在这三年里面,我感觉到专家的努力探索,以及学校的努力,我们取得了很多进展和成果。但是同时在这过程里面我们也出现了一些偏差,还存在很多的困惑,还有一些环节怎么来把握,所以我们今天的这个报告,就要集中这些问题,和我个人的一些思索,还有一些困惑和各位代表进行交流。

首先,第一个问题:到底什么是项目课程?我们怎么界定项目课程?一个课程开发出来以后,凭什么说它是项目课程?这可能是大家非常困惑,也是非常关注的第一个问题。那么在这个过程里面,我们要避免这样几个的误解,这几个情况也是我们确确实实看见的,实实在在发生的。第一个问题,就是项目课程不等于知识项目构成的课程,不是把原来的学科内容简单的重组一下换个名字,这就是项目课程。了解什么,这作为项目,这是一种情况,这种情况明显不合适。第二种情况呢?项目课程也不等于技能训练项目,我们怎么考虑的呢?就是把原来简单技能的操作变成了项目,这也是一个偏差。第三个偏差比较容易误解,就是把项目课程简单的等同于任务本位课程,一个任务就是一个项目,这个也错了。所以这里面有很多概念交叉在一起,待会我尽可能给大家一个回答:什么是项目,什么是模块,什么是任务。

第三种观点比较隐蔽,大家可能还认为他是正确的。象第一种情况、第二种情况一拿出来以后,很多人自己都感觉到它是不到位的,它肯定是不对的。但第三种情况是容易发生的。事实上,我们讲的是什么呢?项目课程也不等同于任务课程。这和任务课程是有很大区别的。我在这里简单和大家举个例子,也不是很成熟的例子。比如说这样一个课程,机械加工技术、机械制造技术这样一个例子。我们通过企业专家分析可能会得到这样一系列工作任务,分析零件图纸的结构工艺性,根据零件的材料,确定毛片的制造方法和形状,最后填写工艺文件,如果是按照传统的这个课程,拿到专家分析材料之后,怎么转化为课程体系?按照原来做法,第一堂课,分析结构图纸的工艺性。第二堂课根据零件确定制造方法,确定毛片的方法和形状,围绕工作任务来组织教学。现在项目课是什么呢?项目课程是打破任务的界限,选择一个典型产品为载体,跨任务来组织教学,强调学生整体职业能力、综合职业能力、问题解决的能力。他的教学顺序打破原任务,任务在这里边只起一个作用,怎么来加入一个载体,项目课程进一步深化,进一步推进,这是第三点。

第四个更容易发生的问题就是,这是个更隐蔽的问题。就是把项目简单化,这个不是不能做,原来的很多实训项目他确实比较有价值,有的老师也确实抓得很紧,但有风险的是这些项目是根据学科课程开发出来的。因为原来他是在三个实训课程里面的,他是根据理论知识学习开发出来的,现在简单的把他倒过来的话,很容易变成我们后面所讲的,项目课程的学科化。如果把原来的拿出来看,就产生这个现象。项目课程要避免这四个误解。

什么是项目课程?怎么界定?第一个界定,我想是课程怎么设,只有以工作任务为参照点设置的课程才能是项目课程。外面有一些说法,项目课程是以产品来设课程不是依任务来设。为这个问题专家专门讨论过,我个人是坚决反对的,这样会把我们学生变得就会做这个产品,产品只是教学手段,起推动作用,我想这一点与工作过程导向是一致的。对项目课程不是以项目教学法对改造传统的项目课程,课程设置一定要改掉,这个理由在什么地方呢?我觉得我们要意识到一个机遇的问题,职业教育不是简单的技能训练,不是知识加技能,课程是一个体系问题,体系区别在什么地方,职业教育的目标是把学生导向工作体系,学术目标是把学生导向知识体系,这个在历史上是两大传统。一个是工教传统,一个是学教传统,几千年来一直都是这样的传统。那么只是到近代以后,近代工业革命以后,我们一部分通过学校,但我觉得基本性质没变,对这里面给我一启示,职业教育课程不是知识加技能,所以我个人认为简单的技能性人才培养是不行的,职业技能与运动技能的本质区别是职业技能是情景化、任务化,脱离了岗位来谈技能,脱离了任务来谈技能,它没有价值,但运动技能是缺情景化,只提技能性人才的话,职业教育培养的人才远不能和体育比。所以技能训练不是真正的职业教育,不要认为学校有很多技能训练,学生反复在那做,我们就是搞好职业教育,职业教育课程问题首先是体系问题和结构问题,这是第一个。

以任务为参照点的课程,要把他们变成项目课程,所以有第二个问题,如果只有第一个方面,那么还只是叫任务课程。第二个就是这门课程中的内容,要以项目为逻辑主线来组织,不是孤立的教知识,也不是孤立的教技能,也不是独立的教任务,而是以一个个产品为载体的活动来组织教学,让他们真正动起来,每一个环节都一定获得一个产品,(8:56—18:02)所以我们非常关注的是结果,得到什么,那么这个问题我觉得要看的比较清楚的话,还需要这个框架,这个框架看上去很奇怪,但是我是思考了很长时间,我是觉得问题不大。

这几种东西怎么会堆积到一起,这就看我们从什么角度来看职业教育课程。一门课程里面的内容设计,有这样几个办法,一个就是知识,以知识为主线的设计,老师讲课就围绕着知识点,一点点往下推。第二种设计是围绕技能,那么这其实就是实训课程,技能实训,点钞,包工。第三种课程是什么呢?第三种课程就是围绕任务,以任务为逻辑主线,那么第四种就是进一步跨越以项目为逻辑主线。在这四种课程模式里面,技能主线、任务主线和项目主线,它们都体现了实践性,所以职业教育课程只讲实践性的话,那么实践性是有不同的体现形式。技能主线,它的目的就是没有与任务相连接,技能培养,那么任务主线和项目主线呢,它体现职业性,但是只有项目主线,就是围绕项目来组织课程,才真正的接近了情境性,才能够达到我们课程设计的终点,也就把职业情境和学习情境对接起来,所以它解决了原来任务课

程里没有解决的一个问题,围绕任务在讲,围绕任务在做,所以这就是你从不同的角度来谈这个问题,课程演变有三个阶段:实践性、职业性和情境性,脱离了任务来学习知识和技能,没有明确知识和技能的目的,这不是职业教育;脱离产品学习任务,没有突显任务对主体的意义,就是我为什么要做这个,所以我经常讲,纯粹的技能训练,在学习性质上跟知识本位是一样的。没有区别,就是这个学的东西。对学生来说没有意义,他不知道学了要干什么,他们都容易导致学生厌学,你只有具体的做这个东西的时候,学生才感觉到我这是我做出来的产品,哪怕做出来的是个假榔头,他们也会非常开心,所以我跟我那边实习项目的老师在交流的时候,大家感受最深刻的一点就是:学生的兴趣大大改变,这点是我们原来不能接受项目课程的老师也在接受项目课程。

那么这里面又牵涉到一些概念,什么是项目,什么是任务。第一点,任务是个专业概念,我们这里讲的任务是一个专业概念,不是日常所理解的任务,这点要区别,比如我们公司里,今天老板让你把这份材料送到哪里去,给你一个任务,这是日常所理解的任务,所以这样的话,我让你作这个项目,就是给你一个任务,所以项目和任务就是一样的,这里面产生一些问题,那么我们这里讲的任务它是专业概念,专业概念是什么呢?也就是指的是任务分析以后得出来的,也就是专家经过工作任务分析以后得出来的这个任务。比如说我们这里的一个材料,产品控制质量,这里面涉及到一些工作任务,他生产步骤的检验,这个是工作任务,具体要干的事情,所以这个任务是什么,他是工作过程的一个环节,而项目是完成任务的结果,比如说一个产品、一项服务、一个决策都可以,那么大家可能会有疑惑,项目是不是只在适合工作类专业,服务类专业它不适合,反正我们做到现在,没有碰到过这种情况,只不过项目的形态不同,项目在项目课程设计里扮演的角色是一个活动的载体。那么,这样大家还会提出一个问题,到底是项目大还是任务大?我个人认为这是个假的问题,项目和课程他们不存在上下位关系。比如说我们任务分解,一级一级分解下去,但是现在加了一个教学载体,可能是课程依据任务,我这门课程里有这样几个项目,而这样几个项目里又涵盖这样几个二级任务,而这几个二级任务就可以完成这个项目。它这里面可能是这样一个问题,它不是上下铺的关系,就看你怎么看,你从二级任务来看,他比较小,从一级任务来看,他又比项目大,这是一个项目和任务的关系。

第二个就是项目跟模块。原来也讲模块课程,现在又讲项目课程,这到底是怎么回事?这也是两个角度的概念,它不是一回事。什么是模块呢?模块它是一组具有相对独立性的课程内容,它的课程内容发挥的方式,比如说我们现在的电脑,无论是它的软件,无论他的硬件,都是由模块做成的。它这样一种思维方式,来源于组合家具。通过不同的块的组合形成一个整体。模块,我们还是觉得它太小了,还不能构成什么板块,但是,它只是课程内容划分的一个单位,而项目课程是课程形态,什么是项目课程的课程形态呢?也就是说我这个课程出以后叫它什么名字,我就叫项目课程,这就叫课程形态。叫工作过程导向,它是课程思想,课程理论,这个要注意区别。那么我这个模块课程和项目课程里面,这两个是不冲突的,我们也可以把一个项目分成几个模块来做。那么我的建议是大家不要纠缠在这些概念里。

目前比较麻烦的一个问题是,项目的边界是什么?因为我们讲项目是一个综合性的东西,那么问题是产品是到多大才称为项目,这是目前比较关键的问题。这个问题我没有明确的思考结果,我只是提示,原则的东西你们看,这个东西可不可以用,有相对的使用价值,因为比如说汽车生产,你说一个项目是什么你说一个整体项目是什么,这样我们教学就变成一堂课了,所以我们职业教育讲的项目就要分解。第二个就是我们为什么要走项目化课程,我想是基于下面四个方面:第一个就是我们先回答什么是职业能力,我们怎么样才能做好。职业教育不是简单的技能,工作过程首先是一个社会过程,它是有目标的,在这里面什么是职业能力?我的理解是知识与工作任务的联系,一定要和任务相连接,这里面我们有两个基本推论:第一,职业教育的课程要让学生在与工作任务联系中去学习知识,第二,要改变过去,与任务相脱离,单独学习课程知识。第二个就是结构论,结构论就是职业教育要高度重视结构的设计,课程结构有两个含义:一个是体系结构,一个是内容结构,体系结构是我这个专业要开什么课,这些课按什么思路、什么模式开出来,从什么角度开出来;第二个内部结构,从以往的课程开发里面,我们老师受职业情况的影响,比较关注课程中的知识和技能这些具体内容,这是很容易陷进去的。因为我自己也是当老师的,教长了就会教到那个程度,就会只关注自己教的内容、知识、技能,所以下课后往往老师坐在办公室里面经常会出现这种情况,张老师问李老师“你讲到哪里了?你讲到第几章了?”“我讲到第5章了。”大家只会讨论这些问题,却没有考虑更高层次的问题,而事实上我们要认识到这一点,就是现在的认知心理学,国外的认知心理学研究的成果非常关注的一个问题就是认知结构,课程结构是影响职业能力形成的一个重要变量,本身就教你,知识的组织方式比知识更重要,我是觉得怎么教比教什么更重要,为什么这么讲呢?能力,其实就是一个人对外的功能,如果用机器来比喻人的话,就是你能做什么功能。决定功能的首要因素是结构,也就是知识你怎么组织的,你是围绕任务来组织,还是围绕知识本身来组织,这是结构问题,不是一个简单的从理论里演绎出实践的问题。一个专业的课程体系,是学生在专业领域最初的认知结构的来源。当学生看见我们这个计划的时候,他的脑里就开始形成,我这个专业具有这个课,那个课,我的知识也要分类,是他最初认识结构的来源。对学生能力发展在这个专业具有决定性意义。不要认为我们上了这些课就是教育,一个教育计划摆在那里对他就是教育,你老师用什么方式、用什么风格跟学生用什么语言来对话,就是教育,比你教的什么重要的多,因为这个会形成学生的思维,他的思维就是跟你老师对话形成的。你只是在那里讲、给他一些信息,没有给他真正的知识。所以,我觉得我们要意识到这一点。有人给我讲过一个例子,他说我们中国的老师,小学老师讲“1”就讲了半天,美国的老师讲一个星期,你会吗?假如我叫你去讲讲你会吗?他说,我也讲不出,我说一个“1”讲一个礼拜比讲半天难得多,怎么讲呢?他说要把小孩带到外边去,这里看,那里看,这就是建构“1”的完整概念。我们的老师只给学生符号,我们认为给他知识,你只给他符号,一个冰山你只给了它水面上的一点点而已,真正大量的知识在它的下面。在这个符号所表现概念的后面。所以我们的学生可能试卷一考,分数很高,因为他考试的方式跟你是对接的,他也是考你的符号,依他的思维发展,,就是在学校里没有建构知识的完整意义,那么项目课程的价值在什么地方?从结构论的角度去考虑,要建构知识的完整意义。

第三个我们讲了,是综合论。就是项目课程要发展学生的学习能力和问题解决能力。任务本位课程我也去反复思考,确实容易导致学生的能力的隔裂、知识的隔裂,今天做这个任务,明天做那个任务,当然我们讲课程要依据任务来设,他这个任务领域,学习领域它是注重整体性、综合性的。西方人容易接受这个,因为西方人本是见树木不见森林的,他习惯了,中

国人见森林不见树木,我们中国人特别强调整体素质。掌握完整的工作过程对职业能力培养有非常重要的意义。第一个它是衡量学生职业能力的重要指标。我们不仅要培养能做事情的人,关键要培养做完整事情的人,能画句号。只会东一榔头西一刨子,这个老板是不喜欢的。第二个是有利于从学生整体意义上理解工作任务,第三个就是有利于提高学生的学习兴趣。他觉得掌握了一个完整的过程。第四个我是同意结果驱动,我个人不太同意任务驱动。因为任务驱动总让人感到是被动的,万一给他个任务,强加给他一个任务,容易给人这样一个概念,他结果就认为我做出什么来,根据这个就在学什么,这个容易被大家理解。所以项目课程它是强调一点,以产品的载体为设计的教学过程,整个教学过程最重要的就是获得一个具有实际价值的产品和服务,所以我们搞项目比较有经验的老师,他往往就非常重要,就你这个东西是不是有项目,最后有没有产品出来,你做到什么时候,他非常关注这个东西。从功能的角度来看,就是它有没有激发学生的兴趣,强调的是结果,就是对它有意义。第二个呢,就是从理论的角度来看,我们获得了过程、结果的统一,这才是职业教育真正需要的实践,实践是过程结果的统一。那么这些就能避免老师讲的情况:某些学生知识学习不感兴趣,学习技能也不敢兴趣,这种差的学生动又不敢动,为什么不敢动呢?没有意义。反复叫他来做,他做出来的是空效的。就跟我们一个体育老师一样,你天天叫他去跑步,说锻炼你的体能,加强你的身体基础,他受得了么,这个要考虑他的毅力的,将来我们老师组织栏目,组织篮球比赛,他的运动量比跑步大的多,他的兴趣比跑步强的多,不要你去跟他讲,这是基本理念,基本设想。

第三个,我们如何设计项目课程,这里面有这样几个问题,第一个,项目中融入学科知识,为什么项目课程中要融入学科知识,这是我们老师谈论最多的问题,那么这个问题呢,根据不同的专业来说,他有区别,主要就是知识的可迁移度,有的专业知识可迁移度小,他基本上就是做到哪就需要哪里的知识,不需要纯的知识,本身的知识是没有的,但有的专业理论知识确实比较深,尤其象医药类的,机电类的专业也是如此。那么这种问题怎么来看呢?我们讲不是要排除许多专业课程,但是这个问题,老师发出问题往往是围绕着项目来选择知识的,我现在是围绕我到底要做什么项目,项目里到底有哪些是要用到我需要的知识的,还是为了学习里面的学科知识来设计项目,这时候我们很多时候答案都摆在后面。疑问是什么呢?它原来学科知识已经成型了,这个知识也要教,那个知识也要教,所以这些都要教进去,我怎么教进去?问题呢就发生在这个地方,所以呢,我们该舍弃的知识就要舍弃,职业教育的重心他不在这里,他的重心就在具体能做什么。第二个比较关键的问题,学校搞这种课程开发,往往发现一种现象,就是课程体系的回归,什么叫课程体系的回归?操作课程的在操作的,但是出来的课程又回到原来的学科体系,“项目课程学科化”,产生这样一个问题,那么这个问题是怎样产生的,这样一张图对学校来说不陌生。我这个专业,目标怎样定位呢?就面对他,所要面对的岗位来定,这个专业面向哪几个岗位,这个岗位需要哪些能力,围绕这些能力,我要开设哪些课程,这个表对学校来说已经非常熟悉,我们很多教育计划拿出来都有这张表。那么在整个教学环节里面,发生课程体系回归现象,两大环节,一个是岗位上的能力,一个是能力到课程,怎么发生的呢?我觉的是这几个方面,第一个,工作任务分析不够详细。刚才我们看了,简单看了一个表,这个工作任务分析表。这个工作任务分析表是详细分析的,主要分析它所面向的任务以及所需要的职业能力,但是我们有的学校只有什么呢,只有一个方法,那么这样你肯定不行。这是第一个发生的原因。那么第二个发生的原因是,没有在任务分析的基础上进行能力分析,这是非常关键的问题,很多拿出来就只有能力分析。但我们职业教育的分析一定要在任务分析的基础之上,否则的话,细致下去,深入下去,很

容易产生什么呢,我们需要什么能力呢,第一个就是要掌握扎实的基础知识,要具备问题解决的能力,要具备与人沟通的能力等等。对能力进行抽象化理解,这是现在能力观极大的误区。能力一定是跟任务相结合。所以呢,不在详细的任务分析基础上进行能力分析,这是很容易产生的问题,就是前面提到的第一个——岗位的能力,直接提到,结果能力不行,第三个,就是在能力的问题上存在什么呢,就是课程设置内容选择与任务的松散性联系,它是松散的。比如说这个地方可能需要力学知识,我去开门力学,它需要的不是一个完整的力学,它是一点方面的力学知识,而要从你这个角度来讲力学知识。我最近参加上海的一个课改,听了一节课,就是说的营销心理学,简直就是把大学的心理学教程拿过来,那么我也学过心理学的,我也教过心理学的,所以这个内容体系我是非常清楚的,但是老师他振振有词,他说你看我,我也是围绕工作任务啊,第一个任务就是分析课程心理,所以我要讲课程心理学。所以这里面问题为什么发生啊,就是选择的丰富性,学生他需要的不是个性心理。没有一个人在与人相处的时候,就测出你的人格,我再和你谈话,这是荒唐的。那么我们有没有这方面的心理学呢?有的,比如说你这心理学教怎么去训练你观察人的能力,他怎么讲,进一所房子,进去以后把眼睛蒙上,你刚才看见什么了,看你回想,这训练什么呢,就是你的观察能力,你一进来看见什么。或时间长了,你看到什么不重要的,他去教,它的意思是你平时在生活中要有意识的训练自己,你这观察人的行为就会提高。那么这个达到预计,如果在门口看到有人讲话,他就问你,这个人是从哪来的?那么推断的结果很有可能是这个人是这个房子的主人,为什么呢,因为他说边上没有车乘,如果是外来的人肯定不知道,这个你要学会推断。我们心理学就有这种研究成果,为什么要讲什么是人格,什么是能力,什么是气质,影响能力形成的因素,就整个学科,问题在这里。我们到底是类型性选择,就是一类知识来选择,我希望选择这块心理学,还是应用性选择,我根据这句话需要什么来选择,问题很大是放在这个环节上。再下面一个问题,是否项目课程都要项目化?建立项目课的主体为多元化的体系,我们是强调这样一个观点,不是所有的项目课程都要项目化,这个不可能也不现实,至少也不正确。谁也没有讲过这个话,所有全部课程都要变成项目化,有的怎么变呢?比如数学。你就是专业里面,也有一些知识性的课程。所以我们还是强调的观点是,以项目课程为主体,多元化课程体系,你不以它为主体,职业特色课程怎么体现?学生在学习我这个专业的,核心课程学不完的基础上,我觉得什么形态的课程都可以学,只要他有这个能力,只要他有这个兴趣。

编译原理课程设计

《编译原理》课程设计大纲 课程编号: 课程名称:编译原理/Compiler Principles 周数/学分:1周/1学分 先修课程:高级程序设计语言、汇编语言、离散数学、数据结构 适用专业:计算机科学与技术专业、软件工程专业 开课学院,系或教研室:计算机科学与技术学院 一、课程设计的目的 课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,设计题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的课程设计的目的是旨在要求学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容,选择合适的数据逻辑结构表示问题,然后编制算法和程序完成设计要求,从而进一步培养学生独立思考问题、分析问题、解决实际问题的动手能力。 要求学生在上机前应认真做好各种准备工作,熟悉机器的操作系统和语言的集成环境,独立完成算法编制和程序代码的编写。 设计时间: 开发工具: (1) DOS环境下使用Turbo C; (2) Windows环境下使用Visual C++ 。 (3) 其它熟悉语言。 二、课程设计的内容和要求 设计题一:算术表达式的语法分析及语义分析程序设计。 1.目的

通过设计、编制、调试一个算术表达式的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词 法检查和分析。 2.设计内容及要求: 算术表达式的文法: 〈无符号整数〉∷= 〈数字〉{〈数字〉} 〈标志符〉∷= 〈字母〉{〈字母〉|〈数字〉} 〈表达式〉∷= [+|-]〈项〉{〈加法运算符〉〈项〉} 〈项〉∷= 〈因子〉{〈乘法运算符〉〈因子〉} 〈因子〉∷= 〈标志符〉|〈无符号整数〉|‘(’〈表达式〉‘)’ 〈加法运算符〉∷= +|- 〈乘法运算符〉∷= *|/ (1) 分别选择递归下降法、算符优先分析法(或简单优 先法)完成以上任务,中间代码选用逆波兰式。 (2) 分别选择LL(1)、LR法完成以上任务,中间代码选 用四元式。 (3) 写出算术表达式的符合分析方法要求的文法,给出 分析方法的思想,完成分析程序设计。 (4) 编制好分析程序后,设计若干用例,上机测试并通 过所设计的分析程序。 设计题二:简单计算器的设计 1.目的 通过设计、编制、调试一个简单计算器程序,加深对语法及语 义分析原理的理解,并实现词法分析程序对单词序列的词法检 查和分析。 2.设计内容及要求 算术表达式的文法:

编译原理课程设计

<PL0编译器-PCompiler> 软件需求说明书 作者:刁诗云、麻汉华、潘彦荃、周津、李程完成日期:2009年6月7日 签收人: 签收日期: 修改情况记录:

目录 软件需求说明书 (1) 1 引言 (1) 1.1 编写目的 (1) 1.2 项目背景 (1) 2 项目概述 (2) 2.1 产品描述 (2) 2.2 产品功能 (2) 2.3 用户特点 (2) 3 具体需求 (3) 3.1 EBNF定义的PL/0文法 (3) 3.2 语法图 (4) 3.3 功能需求 (6) 3.4 系统概要设计 (15)

1 引言 1.1 编写目的 为了清楚表达客户提出的需求,便于用户理解和确认项目所包含的具体功能需求、性能需求以及非公能性需求,因此以文件化的形式,把系统整体及其部分的业务流程、系统功能进行了详细的说明。同时,此文也对开发人员起到引导的作用,请认真阅读。 1.2 项目背景 PL/0是由世界著名计算机科学家、PASCAL语言的创始人N.Wirth教授选择提供的。在选择PL/0语言的过程中,Wirth很费了一番脑筋。一方面他希望借助这个语言,能尽可能把程序设计语言和编译技术一些最重要的内容都讲到;但另一方面又不希望内容太多,太杂,而希望尽可能简单一些,以便与有限的课时和课程范围相适应。于是他精心选择提供了这个PL/0语言。事实证明,它非常适合于编译技术的教学,目前已被国内越来越多的编译教材所采用。 PL/0语言的语句类型比较丰富,能适应各种可能的程序结构。最进本的是赋值语句。组合结构语句有语句串、条件语句和循环语句。还有重要的子程序概念,是通过过程说明和过程调用两部分实现的。至于数据类型和数据结构,PL/0则特别简单,只有整数类型一种,没有数据结构,因此只允许有整常数和整数变量的说明以及相应的算术运算表达式。PL/0允许在一个过程范围内说明常数、变量和过程。这些常数、变量和过程只在它们被说明的过程范围内有效。PL/0语言也允许递归调用,既可以间接递归,也可以直接递归。

工程设计项目策划书(多篇范文)

工程设计项目策划书 为了能写出更好的策划书,下面好范文推荐一篇优秀策划书范文,仅供参考: 前言 通过对润业苑项目的初步分析,我们感到这将是一个可塑性非常强的项目,通过专业的营销和策划操作,它不但可体现出开发商的实力和形象,更应在小高层市场上独树一帜。 我司经过长时间的市场调研,根据市场所反映出来的背景,结合自身所积累的经验,提出切合市场销售的建议供贵司参考。 如能有幸成为贵司的合作伙伴,届时将根据具体资料提供一套系统的极具可行性的营销策划报告,以飨贵司慧眼。 众成伟业房地产营销管理有限公司 目录 一、市场背景 二、项目分析 三、项目定位 四、客源定位 五、产品建议 六、推案策略 七、广告策略 八、销售执行

九、公司简介 十、合作模式 一、市场背景 济南房产市场日趋规范,整体处于上升态势,在市场发展的过程中,我司认为可分为两个阶段,每个阶段市场构成要素的特征,简析如下: (一)九九年之前,被动销售的暴利阶段: 客源特征:以高收入者为主,追求身份与地位的显示,此时市场选择范围小,客户购买存在一定盲目性。 开发商特征:政府对开发公司的实力要求不严,开发商实力良莠不齐,受传统观念束缚严重,不重视客源心理及市场发展特性,主观开发,追求暴利,无品牌意识,对专业销售机构极度排斥。 项目特征:产品形式单一(多层为主),缺乏特色,不注重整体规划,且有明显区域性特征(集中在千佛山周边)。 销售特征:无整体营销思路,盲目追求高利,定价偏高,且无有效的表现及宣传手法,不注重品牌的培养和树立。 (二)xx年以后,振荡中走向规范的过渡阶段 客源特征:客源层次广泛,需求多样化,在楼盘选购及消费心理上趋于理性,此时散户消费逐渐成为市场主力。 开发商特征:迫于竞争的压力,开发商主动寻求新的开发理念,对营销策划理念逐渐接受,同时专业销售人才带来的先进理念也影响

编译原理课程设计报告_LL(1)分析过程模拟

课程设计(论文)任务书 软件学院学院软件工程专业07-1班 一、课程设计(论文)题目LL(1)分析过程模拟 二、课程设计(论文)工作自 2010 年 6 月 22日起至 2010 年 6月 28 日止。 三、课程设计(论文) 地点: 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握LL(1)模块的基本工作原理; (2)培养学生基本掌握LL(1)分析的基本思路和方法; (3)使学生掌握LL(1)的调试; (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)分析LL(1)模块的工作原理; (2)提出程序的设计方案; (3)对所设计程序进行调试。 2)创新要求: 在基本要求达到后,可进行创新设计,如改算法效率。 3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写课程设计论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)课程设计论文装订按学校的统一要求完成 4)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程(含翻译):40分; (3)完成调试:20分;

(4)回答问题:20分。 5)参考文献: (1)张素琴,吕映芝,蒋维杜,戴桂兰.编译原理(第2版).清华大学出版社 (2)丁振凡.《Java语言实用教程》北京邮电大学出版社 6)课程设计进度安排 内容天数地点 构思及收集资料2图书馆 编程与调试4实验室 撰写论文1图书馆、实验室 学生签名: 2009 年6 月22 日 课程设计(论文)评审意见 (1)完成原理分析(20分):优()、良()、中()、一般()、差();(2)设计分析(20分):优()、良()、中()、一般()、差();(3)完成调试(20分):优()、良()、中()、一般()、差();(4)翻译能力(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否() 评阅人:职称: 年月日

编译原理课程设计

编译原理课程设计报告 课题名称: C-语言编译器设计(scanner和parser) 提交文档学生姓名: 提交文档学生学号: 同组成员名单:无 指导教师姓名:金军 指导教师评阅成绩: 指导教师评阅意见: . . 提交报告时间: 2011年 6 月 17 日

1.课程设计目标 设计C-Minus编译器分为scanner和parser两个部分。scanner主要作用是对目标代码进行扫描,列出关键字,变量等内容;parser主要对语法进行分析并生成语法树。 2.分析与设计 ●实现方法:代码用C语言编译而成。其中scanner为手工实现,主要采用switch-case结构实现 状态转换;parser部分采用递归下降分析方法实现。 ●扫描器:C-的词法如下: 1、语言的关键字:i f el se i nt return void while 2、专用符号:+ - * /< <= > >= == != =; , ( ) [ ] { } /* */ 3、其他标记是变量(ID)和数字(NUM),通过下列正则表达式定义: ID = letter letter* NUM = di git digi t* letter = a|..|z|A|..|Z digi t = 0|..|9 4、空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM关键字 5. 注释用通常的C语言符号/ * . . . * /围起来。注释可以放在任何空白出现的位置(即注释不能放在 标记内)上,且可以超过一行。注释不能嵌套 其DFA图如下:

分析器:以下为C-的语法规则BNF:

平面设计师培训项目商业计划书

平面设计师培训项目商业计划书 (项目可行性报告) 中金企信国际咨询公司拥有10余年项目商业计划书撰写经验(注:与项目可行性报告同期开展的业务板块),拥有一批高素质编写团队,为各界客户提供实效的材料支持。 商业计划书撰写目的 商业策划书,也称作商业计划书,目的很简单,它就是创业者手中的武器,是提供给投资者和一切对创业者的项目感兴趣的人,向他们展现创业的潜力和价值,说服他们对项目进行投资和支持。因此,一份好的商业计划书,要使人读后,对下列问题非常清楚:(1、公司的商业机会。2、创立公司,把握这一机会的进程。3、所需要的资源。4、风险和预期回报。 5、对你采取的行动的建议 6、行业趋势分析。) 撰写商业计划书的七项基本内容 一、项目简介 二、产品/服务 三、开发市场 四、竞争对手 五、团队成员 六、收入 七、财务计划 商业策划书用途 1、沟通工具 2、管理工具 3、承诺工具 相关报告 行业研究报告、市场调查报告、产业分析报告 项目立项可行性报告

资金申请可行性报告 市场研究预测报告 专项调查报告 市场投资前景报告 市场行情监测报告 竞争格局分析预测报告 上下游产业链研究报告 投融资可行性报告 编撰商业计划书所需材料清单(根据具体项目要求进行提供) 1、企业简介、企业历史变革以及股东情况,管理团队简历;项目组织机构简介; 2、项目介绍; 3、企业营销策略; 4、项目商业模式; 5、企业近三年财务年度报表及财务分析报告;年度审计报告;企业相关财务评价资料; 6、项目投资金额及融资计划; 7、资金使用规划,预期收入及投资回报率; 8、企业未来战略规划。 由于商业计划书(项目可行性报告)属于订制报告,以下报告目录仅供参考,成稿目录可能根据客户需求和行业分类有所变化。 第一章摘要 1.1 项目基本信息 1.2 市场前景 1.3 资金筹措 第二章项目概况 2.1 建设环境 2.2 建设规模 2.3 建设期

编译原理课程设计报告(一个完整的编译器)

编译原理程序设计报告 一个简单文法的编译器的设计与实现专业班级:计算机1406班 组长姓名:宋世波 组长学号: 20143753 指导教师:肖桐 2016年12月

设计分工 组长学号及姓名:宋世波20143753 分工:文法及数据结构设计 词法分析 语法分析(LL1) 基于DAG的中间代码优化 部分目标代码生成 组员1学号及姓名:黄润华20143740 分工:中间代码生成(LR0) 部分目标代码生成 组员2学号及姓名:孙何奇20143754 分工:符号表组织 部分目标代码生成

摘要 编译器是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。 一.编译器的概述 1.编译器的概念 编译器是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译器将原始程序作为输入,翻译产生使用目标语言的等价程序。源代码一般为高阶语言如Pascal、C++、Java 等,而目标语言则是汇编语言或目标机器的目标代码,有时也称作机器代码。 2.编译器的种类 编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高阶语言作为输入,输出也是高阶语言的编译器。例如: 自动并行化编译器经常采用一种高阶语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语

CMinus词法分析和语法分析设计编译器编译原理课程设计报告书

编译原理课程设计报告 课题名称:C- Minus词法分析和语法分析设计 提交文档学生姓名:X X X 提交文档学生学号:XXXXXXXXXX 同组成员名单:X X X 指导教师姓名:X X 指导教师评阅成绩: 指导教师评阅意见: . . 提交报告时间:2015年6月10日

1.课程设计目标 实验建立C-编译器。只含有扫描程序(scanner)和语法分析(parser)部分。 2.分析与设计 C-编译器设计的整体框架,本实验实现扫描处理和语法分析程序(图中粗黑部分)。 2.1 、扫描程序scanner部分 2.1.1系统设计思想 设计思想:根据DFA图用switch-case结构实现状态转换。 惯用词法:

①语言的关键字:else if int return void while ②专用符号:+ - * / < <= > >= == != = ; , ( ) [ ] { } /* */ ③其他标记是ID和NUM,通过下列正则表达式定义: ID = letter letter* NUM = digit digit* letter = a|..|z|A|..|Z digit = 0|..|9 大写和小写字母是有区别的 ④空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID、NUM 关键字。 ⑤注释用通常的C语言符号/ * . . . * /围起来。注释可以放在任何空白出现的位置(即注释不能放在标记内)上,且可以超过一行。注释不能嵌套 scanner的DFA

说明:当输入的字符使DFA到达接受状态的时候,则可以确定一个单词了。初始状态设置为START,当需要得到下一个token时,取得次token的第一个字符,并且按照DFA与对此字符的类型分析,转换状态。重复此步骤,直到DONE为止,输出token类型。当字符为“/”时,状态转换为SLAH再判断下一个字符,如果为“*”则继续转到INCOMMENT,最后以“*”时转到ENDCOMMENT状态,表明是注释,如果其他的则是字符停滞于当前字符,并且输出“/”。 2.1.2程序流程图

(重庆理工大学计算机学院)编译原理课程设计报告

编译原理课程设计报告 实验名称编译原理课程设计 班级 学号 姓名 指导教师 实验成绩 2013 年06月

一、实验目的 通过设计、编写和调试,将正规式转换为不确定的有穷自动机,再将不确定的有穷自动机转换为与之等价的确定的有穷自动机,最后再将确定有穷自动机进行简化。 通过设计、编写和调试构造LR(0)项目集规范簇和LR分析表、对给定的符号串进行LR分析的程序,了解构造LR(0)分析表的步骤,对文法的要求,能够从文法G出发生成LR(0)分析表,并对给定的符号串进行分析。 二、实验内容 正规式——>NFA——>DFA——>MFA 1.正规式转化为不确定的有穷自动机 (1)目的与要求 通过设计、编写和调试将正规式转换为不确定的有穷自动机的程序,使学生了解Thompson算法,掌握转换过程中的相关概念和方法,NFA的表现形式可以是表格或图形。 (2)问题描述 任意给定一个正规式r(包括连接、或、闭包运算),根据Thompson算法设计一个程序,生成与该正规式等价的NFA N。 (3)算法描述 对于Σ上的每个正规式R,可以构造一个Σ上的NFA M,使得L(M)=L(R)。 步骤1:首先构造基本符号的有穷自动机。 步骤2:其次构造连接、或和闭包运算的有穷自动机。

(4)基本要求 算法实现的基本要求是: (1) 输入一个正规式r; (2) 输出与正规式r等价的NFA。(5)测试数据 输入正规式:(a|b)*(aa|bb)(a|b)* 得到与之等价的NFA N

(6)输出结果 2.不确定的有穷自动机的确定化 (1)目的与要求 通过设计、编写和调试将不确定的有穷自动机转换为与之等价的确定的有穷自动机的程序,使学生了解子集法,掌握转换过程中的相关概念和方法。DFA的表现形式可以是表格或图形。(2)问题描述 任意给定一个不确定的有穷自动机N,根据算法设计一个程序,将该NFA N变换为与之等价的DFA D。 (3)算法描述 用子集法将NFA转换成接受同样语言的DFA。 步骤一:对状态图进行改造 (1) 增加状态X,Y,使之成为新的唯一的初态和终态。从X引ε弧到原初态结点, 从原终态结 点引ε弧到Y结点。 (2) 对状态图进一步进行如下形式的改变

编译原理课程设计

编译原理课程设计 自顶向下语法分析器 学院(系):计算机科学与技术学院学生姓名:xxxxxxxxx 学号:xxxxxxxxx 班级:电计1102 大连理工大学 Dalian University of Technology

目录

1 系统概论 语法分析是编译过程的核心部分。它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。语法分析器在编译程序中的地位如图1所示: 图1 语法分析器在编译程序中的地位 语言的语法结构是用上下文无关文法描述的。因此,语法分析器的工作本质上就是按文法的产生式,识别输入符号串是否为一个句子。这里所说的输入串是指由单词符号(文法的终结符)组成的有限序列。对一个文法,当给你一串(终结)符号时,怎样知道它是不是该文法的一个句子呢?这就要判断,看是否能从文法的开始符号出发推导出这个输入串。或者,从概念上讲,就是要建立一棵与输入串相匹配的语法分析树。 自顶向下分析法就是语法分析办法中的一类。顾名思义,自顶向下就是从文法的开始符号出发,向下推导,推出句子。这种方法是带“回溯”的。 自顶向下分析的主旨是,对任何输入串,试图用一切可能的办法,从文法开始符号(根结)出发,自上而下地为输入串建立一棵语法树。或者说,为输入串寻找一个最左推导。这种分析过程本质上是一种试探过程,是反复使用不同产生式谋求匹配输入串的过程。 实现这种自顶向下的带回溯试探法的一个简单途径是让每个非终结符对应一个递归子程序。每个这种子程序可作为一个布尔过程。一旦发现它的某个候选与输入串相匹配,就用这个候选去扩展语法树,并返回“真”值;否则,保持原来的语法树和IP值不变,并返回“假”值。 2 需求分析 以前,人们对语法的分析都建立在人工的基础上,人工分析虽然能够做到侧类旁推,但终究人力有限,再精密的分析都会出现或多或少的错误。为减少因人为产生的错误,并加快

编译原理课程设计报告

2011-2012学年第二学期 《编译原理》课程设计报告 学院:计算机科学与工程学院 班级: 学生姓名:学号: 成绩: 指导教师: 时间:2012年5 月

目录 一、课程设计的目的 ---------------------------------------------------------------- - 1 - 二、课堂实验及课程设计的内容 -------------------------------------------------- - 1 - 2.1、课堂实验内容-------------------------------------------------------------- - 1 - 2.2、课程设计内容-------------------------------------------------------------- - 1 - 三、visual studio 2008 简介------------------------------------------------------- - 2 - 四、问题分析及相关原理介绍 ----------------------------------------------------- - 3 - 4.1、实验部分问题分析及相关原理介绍 ---------------------------------- - 3 - 4.1.1、词法分析功能介绍及分析------------------------------------- - 3 - 4.1.2、语法分析功能介绍及分析------------------------------------- - 3 - 4.1.3、语义分析功能介绍及分析------------------------------------- - 4 - 4.2、课程设计部分问题分析及相关原理介绍 ---------------------------- - 5 - 4.2.1、编译程序介绍 ----------------------------------------------------- - 5 - 4.2.2、对所写编译程序的源语言的描述(C语言) -------------- - 6 - 4.2.3、各部分的功能介绍及分析 -------------------------------------- - 7 - 4.3、关键算法:单词的识别-------------------------------------------------- - 8 - 4.3.1、算法思想介绍 ----------------------------------------------------- - 8 - 4.3.2、算法功能及分析 -------------------------------------------------- - 8 - 五、设计思路及关键问题的解决方法 ------------------------------------------ - 10 - 5.1、编译系统------------------------------------------------------------------ - 10 - 5.1.1、设计思路 --------------------------------------------------------- - 10 - 5.2、词法分析器总控算法--------------------------------------------------- - 12 - 5.2.1、设计思路 --------------------------------------------------------- - 12 - 5.2.2、关键问题及其解决方法 --------------------------------------- - 13 - 六、结果及测试分析-------------------------------------------------------------- - 14 - 6.1、软件运行环境及限制--------------------------------------------------- - 14 - 6.2、测试数据说明------------------------------------------------------------ - 14 - 6.3、运行结果及功能说明--------------------------------------------------- - 16 - 6.4、测试及分析说明--------------------------------------------------------- - 16 - 七、总结及心得体会 --------------------------------------------------------------- - 17 - 7.1、设计过程------------------------------------------------------------------ - 17 - 7.2、困难与收获 ------------------------------------------------------------- - 17 - 八、参考文献 ------------------------------------------------------------------------ - 18 -

编译原理课程设计

编译原理: 编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。编译原理是计算机专业设置的一门重要的专业课程。编译原理课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战学习能力的课程之一。编译原理课程内容主要是原理性质,高度抽象。 编译原理课程设计: 《编译原理课程设计》是2007年11月浙江大学出版社出版的图书,作者是冯雁、鲁东明、李莹。 内容简介: 本书围绕着编译技术的基本原理和方法,以模拟程序设计语言SPL的编译器的设计和实现为主线,结合词法分析、语法分析、语义分析、代码生成、代码优化、错误处理等各个基本模块,对原理和实现方法进行了详细分析。该编译器可接受SPL的程序,并将其翻译成汇编语言程序,最终实现汇编语言到8086/8088机器语言的翻译。本书为编译技术等相关课程的实验提供了参考。在附件中还提供了三类不同类型和难度的实验题,可供课程实验选择。 第1章引论: 1.1本书介绍 1.2SPL语言的特点及实验安排

1.2.1SPL语言的特点 1.2.2SPL语言编译器的主要结构1.2.3实验安排 1.3平台的选择和介绍 1.3.1LEX简介 1.3.2YACC简介 第2章词法分析: 2.1词法分析器的基本框架 2.2词法分析器的基本原理 2.2.1DFA的构造和实现 2.2.2词法分析的预处理 2.2.3实现词法分析器的注意要点2.3词法分析器的实现 2.3.1SPL语言单词属性字 2.3.2SPL词法分析器的输入和输出2.3.3SPL词法分析器的分析识别第3章语法分析: 3.1语法分析的基本框架 3.1.1上下文无关文法 3.1.2语法分析过程 3.1.3语法分析过程中的数据结构3.2语法分析的基本方法

编译原理课程设计

先简要分析一下语法分析的大致流程: 当有句子要进行处理时,首先要对其进行词法分析来分解出该句子中的每个符号,然后将该句子按照算符优先算法压入归约栈中,如果可以顺利归约,则说明这是一个合法的句子,否则该句子非法。 这里有一个需要考虑的地方,就是如何进行归约。由于文法已经给定,所以我们考虑设计一个文法表,文法表中的内容就是可归约串的种别码的顺序,比如v=E可以表示为9,1,13。这样的话当我们要进行一次归约时,只用按顺序存储最左素短语中符号的种别码,然后拿这个种别码序列与文法表进行匹配,就可知道当前归约需要执行哪些操作。 还有一点需要注意,就是如何对一个表达式进行求值。这里需要我们设计一个二元组的变量名表,这个变量名表可以根据变量的名称来返回变量的数据。变量名表的具体设计见详细设计部分。 由于是简化分析,所以这个程序只考虑整数的处理。 有了上面的分析,可以构造出算符优先分析算法的流程图,如下图所示。

详细设计 (1)词法分析部分 由于词法分析的内容在课程设计1中已经介绍,并且这次的状态转换图与课程设计1中的非常相似,所以这里就不过多介绍。(2)优先关系表 在程序中我们用一个二维数组priTable[][]来存储算符间的优先关系。priTable[a][b]=1表示a>b; 。priTable[a][b]=0表示a=b; 。priTable[a][b]=-1表示a

编译原理实验-词法分析器的设计说明

集美大学计算机工程学院实验报告 课程名称:编译原理班级: 指导教师:: 实验项目编号:实验一学号: 实验项目名称:词法分析器的设计实验成绩: 一、实验目的 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 二、实验容 编写一个词法分析器,从输入的源程序(编写的语言为C语言的一个子集)中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示) 三、实验要求 1、词法分析器的功能和输出格式 词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符 2 别单词的类型,将标识符和常量分别插入到相应的符号表中,增加错误处理等。 3、编程语言不限。

四、实验设计方案 1、数据字典 本实验用到的数据字典如下表所示:

3、实验程序 #include #include #include #include //判断读入的字符是否为字母 bool isLetter(char c){ if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')){ return true; } else return false; } //判断读入的字符是否为数字 bool isDigit(char c){ if(c >='0' && c <= '9'){ return true; } else return false; } //判断是否为关键字 bool isKey(char *string) { if(!strcmp(string,"void") || !strcmp(string,"if")|| !strcmp(string,"for")|| !strcmp(string,"wh ile") || !strcmp(string,"do")|| !strcmp(string,"return")|| !strcmp(stri ng,"break") || !strcmp(string,"main")|| !strcmp(string,"int")|| !strcmp(strin g,"float")|| !strcmp(string,"char") || !strcmp(string,"double")|| !strcmp(string,"String"))

编译原理课程设计 C语言编译器的实现

编译原理课程设计报告 设计题目编译代码生成器设计 学生姓名 班级 学号 指导老师 成绩

一、课程设计的目的 编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,它在系统软件中占有十分重要的地位,是计算机专业学生的一门主修课。为了让学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯通本课程所学专业理论知识,提高他们的软件设计能力,特设定该课程的课程设计,通过设计一个简单的PASCAL语言(EL语言)的编译程序,提高学生设计程序的能力,加深对编译理论知识的理解与应用。 二、课程设计的要求 1、明确课程设计任务,复习编译理论知识,查阅复印相关的编译资料。 2、按要求完成课程设计内容,课程设计报告要求文字和图表工整、思路清晰、算法正 确。 3、写出完整的算法框架。 4、编写完整的编译程序。 三、课程设计的内容 课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于编译的知识量较复杂而且综合性较强,因而对一个完整的编译程序不适合平时实验。通过课程设计可以达到综合设计编译程序的目的。本课程的课程设计要求学生编写一个完整的编译程序,包括词法分析器、语法分析器以及实现对简单程序设计语言中的逻辑运算表达式、算术运算表达式、赋值语句、IF语句、While语句以及do…while语句进行编译,并生成中间代码和直接生汇编指令的代码生成器。 四、总体设计方案及详细设计 总体设计方案: 1.总体模块 主程序 词法分析程序语法分析 程序 中间代码 生成程序

2. 表2.1 各种单词符号对应的种别码 单词符号种别码单词符号种别码bgin 1 :17 If 2 := 18 Then 3 < 20 wile 4 <> 21 do 5 <= 22 end 6 > 23 lettet(letter|digit)* 10 >= 24 dight dight* 11 = 25 + 13 ;26 —14 ( 27 * 15 ) 28 / 16 # 0 详细设计: 4.1界面导入设计 (1)一共三个选项: ①choice 1--------cifafenxi ②choice 2--------yufafenxi ③choice 3--------zhongjiandaima (2)界面演示 图一

VI设计项目策划书

XXXXXX公司(单位、品牌等)VI设计项目策划书 提示:策划书是对某个未来的活动或事件进行目标规划,并展现给读者的文本,策划书中不仅仅要明确VI设计项目的立意、定位,还要涉及相应的分析调查、执行流程、人员分配等具体事宜。策划书的形式并不重要,有些小企业和品牌甚至不要求写出策划书,但其中包含的内容是需要项目负责人和设计人员非常明确的。策划书没有绝对的范本,可以依据具体情况添加或删除某些项目。 一、背景介绍: 公司成立的时间;拥有的优势(如:具有先进的设备、先进的管理手段、拥有懂管理、业务强的专业人才等);前景规划。 公司有明确的经营理念、经营战略、企业使命、价值观念等,但公司为了能有更好的发展亟待一套完整的企业视觉识别系统(VI)作为其对外宣传和对内管理的有效手段,是企业理念尽快通过直观的形式传递出去,争取受众的认同,并为企业长久发展做信息宣传,打造人们心中一个优秀知名的的企业(品牌)。VI对企业内部管理也会发挥很大的作用,对职工产生凝聚力与归属感,为企业(品牌)的明天而努力。 二、市场分析: 市场上的企业视觉形象如何(标志大多以几何形为主体元素,造型简洁、清晰。色彩明快如:如表现生命力的红色、绿色;表现科技感的蓝色等)这些特征是长期为市场所接受的。本公司的标志和形象的设计既要体现行业的共性,也要避免雷同,要显示自己个性。三、设计定位: 经过分析总结企业内部与外部的情况,本企业的VI设计定位概括为: 1.体现品牌的特点 2.彰显品牌的气质和不断发展的目标 3. 表现品牌经营理念和企业文化 四、内容规划: 根据企业需求,VI设计项目包括:标志设计、标准字设计、标准色和辅助色设计、基本元素组合设计等基础部分;办公系统、服装

编译原理课程设计---一个简单编译器的设计与分析

摘要 使用过现代计算机的人都知道,多数用户是应用高级语言来实现他们所需要的计算的。现在计算机系统一般都含有不只一个的高级语言的编译程序,对有些高级语言甚至配置了几个不同性能的编译程序,供用户按不同需要进行选择。高级语言编译程序是计算机系统软件最主要的组成部分之一,也是用户最直接关系的工具之一。 计算机上执行一个高级语言程序一般分为两步:第一,用一个编译程序把高级语言翻译成机器语言程序;第二,运行所得的机器语言程序求得计算结果。 通常说的翻译程序是指能够把某一种语言程序转换成另一种语言程序(目标语言程序)。如果源语言诸如Fortran,Pascal,C,Ada或java这样的高级语言,而目标程序是诸如汇编语言或者机器语言这类的低级语言,这样的一个翻译程序就是称为编译程序。 一个编译程序的工作过程一般可以划分为五个阶段:词法分析、语法分析、语义分析与中间代码生成、优化、目标代码生成。每个阶段都是从上一个阶段得到结果,对他进行分析,并且根据一些外部环境(例如符号表等)得到最终的输出结果。要构造一个编译程序,可以按照这样的阶段来分别构造,最后来连调。 现在人们已经建立了多种编制部分编译程序或整个编译程序的有效工具。有些能用于自动生成扫描器(如LEX),有些可以用于自动产生语法分析器(如YACC),有些甚至可以用来自动产生整个的编译程序。这些构造编译程序的工具成为编译程序-编译程序、编译程序产生器或翻译程序书写系统,他们是按照编译程序和目标语言的形式描述而自动产生编译程序的。 编译程序是一极其庞大而又复杂的系统,掌握它比较苦难。但是一旦对其掌握,对以后的程序语言设计,系统软件分析,系统软件设计,形式语言研究等方面都是非常有好处的。 关键字:C语言、、编译、扫描器、语法分析

编译器_编译原理课程设计报告书

广西大学 编译原理课程设计 专业:计算机科学与技术 姓名: 课程:编译原理 指导教师:

目录 一.程序简介与分析---------------------------------------------------------1 二.程序适用围-----------------------------------------------------------1 三.词法分析---------------------------------------------------------------1 四.语法分析---------------------------------------------------------------3 五.语义分析和中间代码生成------------------------------------------------9 六.代码生成--------------------------------------------------------------11 七.流程图----------------------------------------------------------------12 八.实现------------------------------------------------------------------13 九.程序运行结果----------------------------------------------------------13 十.总结------------------------------------------------------------------18 十一.附录(源程序)--------------------------------------------------------19

编译原理课程设计

编译原理课程设计 编译原理是大学计算机专业的必修课程。《编译原理课程设计》使用优秀的开源Java编译器GJC作为编译教学的基础平台,通过分析一个真正实用的现代编译系统,把编译理论应用到实际的工程实践中。全书不仅包括对编译器源代码的分析、对实例的讲解,还在最后给出3个具体的课程设计实验,介绍如何用书本上的编译理论实现一个真正的编译器。《编译原理课程设计》适合作为大专院校编译原理课程设计的指导用书,相关的从业人员和研究人员也可以从中获得有益的参考。 本书围绕着编译技术的基本原理和方法,以模拟程序设计语言SPL (SimplePascalLanguage)的编译器的设计和实现为主线,结合词法分析、语法分析、语义分析、代码生成、代码优化、错误处理等各个基本模块,对原理和实现方法进行了详细分析。该编译器可接受SPL的程序,并将其翻译成汇编语言程序,最终实现汇编语言到8086/8088机器语言的翻译。本书为编译技术等相关课程的实验提供了参考。在附件中还提供了三类不同类型和难度的实验题,可供课程实验选择。本书所附光盘包含了SPL编译器的所有代码。 本教材适合作为编译技术课程的配套的实验教材,也可作为有关编译方面研究的参考资料。 本书围绕着编译技术的基本原理和方法,以模拟程序设计语言SPL(SimplePasealLanguage)的编译器的设计和实现为主线,结合词法分析、语法分析、语义分析、代码生成、代码优化、错误处理等

各个基本模块,对原理和实现方法进行了详细分析。该编译器可接受SPL的程序,并将其翻译成汇编语言程序,最终实现汇编语言到8086/8088机器语言的翻译。本书为编译技术等相关课程的实验提供了参考。在附件中还提供了三类不同类型和难度的实验题,可供课程实验选择。本书所附光盘包含了SPL编译器的所有代码。 本教材适合作为编译技术课程的配套的实验教材,也可作为有关编译方面研究的参考资料。 第1章引论 1.1本书介绍 1.2SPL语言的特点及实验安排 1.2.1SPL语言的特点 1.2.2SPL语言编译器的主要结构 1.2.3实验安排 1.3平台的选择和介绍 1.3.1LEX简介 1.3.2YACC简介 第2章词法分析 2.1词法分析器的基本框架 2.2词法分析器的基本原理 2.2.1DFA的构造和实现 2.2.2词法分析的预处理 2.2.3实现词法分析器的注意要点

相关文档
相关文档 最新文档