【Asp.net精品源码栏目提醒】:网学会员Asp.net精品源码为您提供C语言在线编译器【毕业论文,绝对精品】 - 毕业设计参考,解决您在C语言在线编译器【毕业论文,绝对精品】 - 毕业设计学习中工作中的难题,参考学习。
学校代码 10722 0810024104 学 号分类号 密 级 公 开 题目 C 语言在线编译器 Online C Complier 作 者 姓 名 专 业 名 称 软件工程 学 科 门 类 工 学 指 导 教 师 提交论文日期 成绩评定等级 摘要 C 语言在 1970 年由丹尼斯.里奇研制出来后发展至今,以它高效、灵活、功能丰富、表达力强和较高的移植性等特点,广泛用于系统与应用软件的开发,2012 年反超 Java 重登宝座,在程序员中说起 Hello World,可能就想起 C 语言了,同时在计算机二级考试中,也有 C 语言的科目,所以在学习 C 语言的人当中不仅仅是程序员,还有很大一部分是对计算机知识,特别是编程语言了解相对较少的学生和社会人群。
因此,需要一个相对简易,易理解的 C 语言编译和学习环境提供给这种人群。
本论文研究的是 C 语言在线编译器,包含了 C 语言的编译器,加入了 C 语言的学习资料,示例代码,供初学者使用。
系统架构是基于 B/S 的系统,在前端使用了 JS,JQUERY,AJAX,CSS,HTML 作为布局和业务逻辑,由于 C 语言在线编译器的特殊性,前端技术也承担了一部分的 C 语言编译的技术,大量使用了正则表达式,来操作 C 语言代码字符。
后台使用 JAVA 语言开发,使用 LL1 算法,词法分析来完成 C 语言的语法分析,应用 struts机制和页面交互,后台主要用于代码编译、错误提示,前端主要用于代码执行。
论文主要介绍了本课题的开发背景、所完成的功能和以及具体的开发过程。
关键词:C 语言;编译器;LL1 算法;正则表达式 Abstract C language developed by Dennis Ritchie in 1970 development has to expressthecharacteristics of strong and high portability efficient flexible feature-rich widelyused forsystem and application software development 2012overtake re-board the throne of Javaprogrammers talk about the Hello World may think of the C language while in the computer twoexaminations but also the subjects of the C language not just in learning the C languageprogrammers.there are a large part of computerknowledge especially a programming language isunderstood that a relatively small number of students and social groups. Therefore we need arelatively simple easy to understand the C language compiler and learning environmentavailable to thispopulation. This thesis is a C Language Compiler contains a C language compiler adding aC-languagelearning materials sample code for beginners to use. The system architecture is based on B / Ssystem the front end of the JS JQUERY AJAXCSS the HTML layout and Business logic dueto the special nature of the C Language compiler front-end technology also bear part of the Clanguage compiler technology to achieve The use of regular expression operation of the Clanguage code characters.Background using the JAVA language development Use LL1algorithm lexical analysis to complete C language syntax analysis application strutsmechanismsinteract and page background is mainly used for code compilation error thefront-end for code execution. The paper introduces the development background of thesubjectthe complete function and the specific development process.Keywords: C Language complier LL1 Algorithm Regular expressions
精品毕业论文 目录摘要........................................................................ IAbstract................................................................... II第一章 概 述................................................................ 1 1.1 C 在线编译器的定义................................................... 1 1.2 web 应用价值......................................................... 1 1.3 C 在线编译器意义..................................................... 1 1.4 开发技术 ............................................................ 1第二章 需求分析............................................................. 3 2.1 可行性研究 .......................................................... 3 2.1.1 技术可行性..................................................... 3 2.1.2 经济可行性..................................................... 3 2.2 系统的功能要求 ...................................................... 3 2.3 系统的性能要求 ...................................................... 4 2.3.1 可靠性要求 ..................................................... 4 2.3.2 时间要求 ....................................................... 4 2.3.3 并发处理能力要求 ............................................... 4第三章 关键技术............................................................. 5 3.1 Ajax 概述............................................................ 5 3.2 Servlet 概述......................................................... 5 3.3 Jquery 概述.......................................................... 5 3.4 正则表达式 .......................................................... 6 3.5 LL1 算法............................................................. 6 3.6 编译器 .............................................................. 6第四章 概要设计............................................................. 8 4.1 系统总体结构......................................................... 8 4.2 代码编辑模块......................................................... 8 4.3 代码分析器模块....................................................... 9第五章 详细设计与实现...................................................... 10
精品毕业论文 5.1 代码编辑模块........................................................ 10 5.1.1 页面设计...................................................... 10 5.2 类设计 ............................................................. 10 5.2.1 代码分析器类图................................................ 11 5.3 代码生成器模块和代码执行模块........................................ 13第六章 系统测试............................................................ 15 6.1 测试方法 ........................................................... 15 6.2 测试用例 ........................................................... 15 6.3 测试结果 ........................................................... 16总结....................................................................... 17致谢....................................................................... 18参考文献................................................................... 19
精品毕业论文 第一章 概 述1.1 C 在线编译器的定义 C 语言是众多编程语言中的姣姣者,每年都有很多高校学生以及一部分社会人群在学习 C 语言,但是传统的虽然功能强大,但是相对复杂,并且 C 语言本身也相对较难1,对于刚入门的新手,会有一定的心里压力,同时随着互联网的普及,许多互联网应用都给我们带来了极大的便利,结合互联网和传统的 C 语言编译器,就产生了有特色的 C 语言在线编译器,只要能上网,不需要安装任何的编译环境和软件就能够写 C 语言程序,编译 C 语言程序,执行 C 语言程序,同时也提供了大量的 C 语言学习资料以及示例代码,让 C 语言初学者们能够轻松简单快乐的学习 C 语言。
1.2 web 应用价值 传统应用指的是仅仅能运行在 pc 上的,单用户操作的应用,例如我们每天都会接触的Office 软件,他们功能强大,但是仅仅只能应用在 PC 机上,无法和别人共享,在使用他们之前,你必须安装对应的软件,他会占用你一定的硬盘空间和内存,即有一定的消耗。
但是如果将传统的应用换成互联网应用2,那么它所产生的消耗就少得多,你仅仅需要能上网,就能够使用,而且随着 web 技术的发展,新技术的成熟,比如 Html5,互联网应用所产生的用户体验也完全不亚于传统的应用,在功能上也能够接近传统应用。
所以,将一切的传统应用转换成互联网应用都是合适的,甚至是您的操作系统,在互联网应用上的更高一层就是云,这也是今后云计算,云存储的发展方向。
1.3 C 在线编译器意义 C 语言在线编译器,不需要安装任何的编译环境和软件就能够写 C 语言程序,编译 C语言程序,执行 C 语言程序。
用户能够快速的开始编写 C 语言程序3,不需要承担传统编译器所带来的内存消耗和硬盘存储空间的消耗,同时 C 语言在线编译器集学习和编写代码为一体,边学习边实践是最好的学习方式,同时,用户可以到任何一个可以上网的 PC 上编写代码,学习 C 语言,不需要费时去安装和配置传统的编译环境。
1.4 开发技术 本系统是严格的按照“软件工程”的思想和开发流程进行的4,采用 B/S 架构5,前端使用 Ajax、jquery,html、 将页面显示和页面逻辑处理和页面数据剥离开来, css 结合 Javascript,给予了页面动态效果6,增强了用户体验。
后台分为逻辑处理模块和前端交互模块,把业
精品毕业论文务逻辑和数据交互拆分开来,便于后期的维护。
,使用 SeverLet 和 在软件工程开发思想的指导下,使用了最优秀的开发工具 Intellij,Ajax 技术7,采用 Tomcat7.0 作为 Web 服务器。
精品毕业论文 第二章 需求分析 根据调查显示至今年四月份开始至今,C 语言是世界上使用的最多的语言,C 语言如此受欢迎已经能够足够说明 C 语言本身的优点吸引着开发人员去使用它,也使广大人群去学习它,同时在计算机二级考试中,也有 C 语言的科目。
学习总是需要和实践相结合,在学习 C 语言过程中需要大量的代码编写,这就需要一个对于新手来说简单、方便的编译器,来为学习 C 语言的人群减轻学习压力,但是如今在PC 上运行的 C 语言编译器大多数比较复杂,C 语言学习者还需要花心思去熟悉 C 语言编译环境。
在学习 C 语言的人当中不仅仅是程序员,还有很大一部分是对计算机知识了解相对薄弱的学生和社会人群。
同时,这类人群的学习环境复杂,并不是每个人都拥有 PC,他们可能去网吧,朋友家去练习,而且各个操作系统也存在差异,这样传统编译器就带来了些麻烦,因为到一个新的环境去学习,你就可能需要下载安装软件,而这个是一个相对耗费时间和精力的过程。
因此,脱离系统环境的的 C 语言编译环境提供给这类人群。
2.1 可行性研究2.1.1 技术可行性 在大学,学习了 Java8、Web、编译原理等关键性的技术9,为我之后的学习和写这个系统打下了坚实的基础,同时这些技术也实际应用过,增加了我能够写好这个系统的信心。
这些技术已经相当成熟,遇见的问题可以通过技术资料、搜索引擎解决。
大学也培养了我的自学能力,对于陌生的知识能够较快的接受和理解,并将他们投入实战应用。
学校学习了软件工程、软件需求与分析等课程,加上在公司实习积累的经验,使得我能够做好需求分析,架构设计等工作,为编写软件打下了基础6。
2.1.2 经济可行性 经济可行性主要是从对项目的经济上进行分析评价的,一方面是支出的费用,包括编写这个系统的成本,以及后期系统上线后需要服务器等硬件支持和网站维护的花费,另一个是取得的收益,在网站积累用户后,可以和 C 语言培训机构合作,加入培训机构的广告来获取广告费用。
2.2 系统的功能要求 C 语言编译器要实现 C 语言语法检验功能、C 语言代码转换功能、运行结果功能、C
精品毕业论文语言在线学习功能。
其具体功能模块如下:1. C 语言语法检验模块:通过该模块可以对用户编写的 C 语言进行代码扫描,检验 C 语 言程序语法错误。
2. C 语言代码转换模块:通过该模块可以实现将 C 语言代码转换为 JS 代码。
3. 运行结果模块:通过该模块可以实现将由 C 语言代码转换过来的 JS 代码运行输出结果。
4. C 语言在线学习模块:通过该模块提供 C 语言学习资料以及示例代码,供用户学习8。
2.3 系统的性能要求2.3.1 可靠性要求 系统没有后台数据库,不需要考虑后台数据的完整性以及数据安全,同时系统大量的功能实现是由 Javascript 去完成的,以及使用了 Ajax 技术,减少了页面和后台的访问,减少了恶意的 Doc 攻击,也使得系统可以接受庞大的用户同时访问。
2.3.2 时间要求 在不考虑网络状况的情况下,系统响应时间应较迅速,一般控制在 0.1 秒以内。
2.3.3 并发处理能力要求 系统能够支持同时间多用户的访问要求,并且保证运行的顺畅。
精品毕业论文 第三章 关键技术3.1 Ajax 概述 传统的 Web 应用允许用户端填写表单(form),当送出表单时就向 Web 服务器发送一个请求。
服务器接收并处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部分 HTML 代码基本上是相同的。
由于每次应用的沟通都需要向服务器发送请求,应用的回应时间就依赖于服务器的回应时间。
这导致了用户界面的回应比本机应用慢得多。
与此不同,AJAX 应用可以仅向服务器发送并取回必需的数据,它使用 SOAP 或其它一些基于 XML 的页面服务接口(接口),并在客户端采用 JavaScript 处理来自服务器的回应。
因为在服务器和浏览器之间交换的数据大量减少(大约只有原来的 5),结果我们就能看到回应(服务器回应)更快的应用(结果)。
同时很多的处理工作可以在发出请求的客户端机器上完成,所以 Web 服务器的处理时间也减少了。
3.2 Servlet 概述 Servlet 是一种服务器端的 Java 应用程序,具有独立于平台和协议的特性可以生成动态的 Web 页面。
它担当客户请求(Web 浏览器或其他 HTTP 客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
Servlet 是位于 Web 服务器内部的服务器端的Java 应用程序,与传统的从命令行启动的 Java 应用程序不同,Servlet 由 Web 服务器进行加载,该 Web 服务器必须包含支持 Servlet 的 Java 虚拟机。
3.3 Jquery 概述 jQuery 是一个跨浏览器的 JavaScript 库的设计,简化了客户端脚本的 HTML。
简单的说 jQuery 是使用最流行的 JavaScript 库。
jQuery 是开
源码软件, jQuery 的语法专门设计,以使它更容易来浏览一个文档,选择 DOM 元素,创建动画,处理事件,开发 Ajax 应用程序。
jQuery 还提供了插件开发创造能力的 JavaScript 库。
这使开发人员能够创建抽象为低层次的互动和动画,先进的特效和高层次,主题能够部件。
jQuery 库的模块化方法允许创建强大的动态网页和 Web 应用程序。
微软和诺基亚宣布其平台上捆绑 jQuery 的,微软采用它最早在
ASP.NET AJAX 框架和
ASP.NET MVC 框架,而诺基亚已经融入他们的 Web 运行时构件开发平台。
精品毕业论文3.4 正则表达式 正则表达式(Regular Expression、regex 或 regexp,缩写为 RE),也译为正规表示法、常规表示法,在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
在很多文本编辑或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。
许多程序设计语言都支持利用正则表达式进行字符串操作。
例如,在 Perl 中就内建了一个功能强大的正则表达式引擎12。
3.5 LL1 算法LL1是预测分析器,第一个 L 代表扫描模式是自左向右的,第二个 L 代表分析模式是最左推导。
至于括号中的1 代表在分析中最多向前看一个输入字符。
LL1的组成包括总控程序,分析栈和分析表, First 集合以及后面讲到的 Follow 集合都与分析表有关。
其中分析表是 LL1分析器的核心。
分析栈:存放分析过程中的文法符号(待匹配和已经推导的串)。
分析表:判断当前用那条文法进行推导总控程序:做大的调度工作关于 LL1文法的性质如下:⑴任何 LL1文法是无二义性的。
⑵若一文法中的非终结符含有左递归,则它必然是非 LL1文法。
⑶非 LL1语言是存在的。
⑷存在一种算法,它能判定任一文法是否为 LL1文法。
⑸存在一种算法,它能判定任意两个 LL1文法是否产生相同的语言。
⑹不存在这样的算法,它能判定上下文无关语言能否由 LL1文法产生。
3.6 编译器 编译程序构造的一般原理和基本方法。
内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。
编译器是将一种语言翻译为另一种语言的计算机程序。
编译器将源程序(sourcelanguage) 编写的程序作为输入,而产生用目标语言(target language )编写的等价程序。
编译器编译程序的流程:1. 扫描程序(scanner) 在这个阶段编译器阅读源程序(通常以析程序字符流的形式表示)。
精品毕业论文2. 语法分析程序(parser ) 语法分析程序从扫描程序中获取记号形式的源代码,并完成定义程序结构的语法分析(syntax analysis ),这与自然语言中句子的语法分析类似。
语法分析定义了程序的结构元素及其关系。
通常将语法分析的结果表示为分析树(parse tree)或语法树(syntax tree)13。
3. 语义分析程序(semantic analyzer ) 程序的语义就是它的“意思”,它与语法或结构不同。
程序的语义确定程序的运行,但是大多数的程序设计语言都具有在执行之前被确定而不易由语法表示和由分析程序分析的特征。
4. 代码生成器(code generator)5. 代码生成器得到中间代码(IR),并生成目标机器的代码 第四章 概要设计4.1 系统总体结构 系统从纵向上分为两层,即前端和后台,前端处理数据显示,以及部分的业务逻辑,包括代码的初步审查、代码生成、代码执行,后台主要负责代码分析的业务逻辑,前端和后台通过 Ajax 结合 Severlet 来进行数据通讯。
系统的框架如图 4.1 所示。
代码编辑器 结果打印 代码初步审查 代码执行器 数据传送 词法分析 代码生成器 前台 后台 代码分析器 数据传送 图 4.1 系统框架图4.2 代码编辑模块 代码编辑模块主要用于得到用户输入的代码,并对用户输入关键字提示,其工作流程如图 3.2 所示。
空格识别 编辑块(Div) 关键字识别块 否 是 字体颜色 处理 图 4.2 代码编译工作流程图 .
上一篇:
C#自定义控件五报警按钮
下一篇:
传染病防治法修订后“出炉”