编译原理pdf是计算机专业的一门重要专业课。
编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。
编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。
编译原理课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战学习能力的课程之一。编译原理课程内容主要是原理性质,高度抽象。
学习编译原理pdf的方法:
1、端正认识:编译原理在静态文本处理上有广泛应用,把HTML文件转化为纯文本,利用编译原理来实现非常简单。理解编译原理的实用性,可以提高学习兴趣。
2、反复看书:是基本的方法,看书可以读懂很多内容。
3、结合源码学习:看懂代码,才能说真正理解理论。要完全看懂yacc的代码,工作量很大,同样要先理解理论。
4、删繁就简,避重就轻。对于词法分析,可避免自动机理论和集合论推演的介绍,直接搬出源码,降低理解难度,对于语法分析递归下降和LL文法及相应的源码可简单介绍,而对LR文法理解即可,这样可短时间内编写出一个能够运行的词法分析器和语法分析器,可以提高学习积极性。
上机运行一个C程序,必须经过以下三个步骤:
1、编辑C源程序文件
所谓C源程序,就是存放C源程序的文件。C源程序文件可以随意命名,但其扩展名必须是C(在以下的说明中,我们假设文件名为AC)。
编辑C源程序文件有两种含义:建立或修改C源程序文件。如果磁盘中没有相应的文件,则编辑的目的就是建立新文件,即输入你的程序到文件中;如果相应的文件已经存在,则编辑的目的就是要修改文件。无论是建立或是修改,最终目的都是要得到一个正确的C源程序文件。将程序正确地保存在文件后,编辑工作即告结束。
2、编译和连接
(1)编译的概念及其目的
任何高级语言程序(源程序)计算机都不能直接识别,要执行源程序,首先必须翻译成机器语言即目标代码,计算机才能直接识别。将高级语言源程序翻译成目标代码程序的过程称为“编译”,编译工作由专门的编译程序完成,编译后得到的目标代码文件的扩展名为OBJ(如AOBJ)。
(2)连接的概念及其目的
编译后得到的目标代码虽然计算机能直接认识,但还不能直接执行,因此目标模块可能只是整个程序中的一个模块,并不是整个程序的完整模块;另外在目标模块中往往使用了一些未在本模块中定义的外部引用如外部函数等,因此,编译后还必须把各目标模块组合起来,同时把有关的各种代码装配在一起产生一个完整的可执行文件后,才能直接执行。组合和装配的过程就称为“连接”,由专门的连接程序完成,连接后得到的文件称为可执行文件,其扩展名为EXE(如AEXE)。
3、执行程序
经过编译和连接,最后得到了扩展名为EXE的可执行文件,就可以直接拿来运行。当可执行文件运行时,系统将CPU的控制权交给运行程序,同时按照程序设计的步骤一步步去执行,直到程序执行完毕为止。
对以上三个步骤,每一步骤都对应相应的程序命令,不过,不同版本的C语言其 *** 作命令会有所不同。这里,我们选用了Turbo c 20作为我们上机实习的工具。Turbo c集成环境是一个集编辑、编译、连接、调试、运行和文件管理为一体的工具,对C程序上机过程的三个步骤,都可在此集成环境中完成。我们首先了解Turbo c集成环境的使用方法。
>
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60 1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序1963年英国的剑桥大学推出了CPL(CombinedProgram- ming Language)语言CPL语言在ALGOL 60的基础上接近了硬件一些,但规模比较大,难以实现1967年英国剑桥大学的Matin Richards对 CPL语言作了简化,推出了BCPL(Basic Combined Programming Language)语言1970年美国贝尔实验室的 Ken Thompson以 BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的 B语言( 取 BCPL的第一个字母),并用 B语言写第一个UNIX *** 作系统,在PDP-7上实现 1971年在PDP-11/20上实现了B语言,并写了UNIX *** 作系统但B语言过于简单,功能有限1972年至 1973年间,贝尔实验室的 DMRitchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母)C语言既保持了BCPL和B语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等) 最初的C语言只是为描述和实现UNIX *** 作系统提供一种工作语言而设计的1973年,KThom- pson和DMritchie两人合作把UNIX的90%以上用 C改写(UNIX第5版原来的 UNIX *** 作系统是1969年由美国的贝尔实验室的 KThompson和DMRitchie开发成功的,是用汇编语言写的)
后来,C语言多次作了改进,但主要还是在贝尔实验室内部使用直到1- 975年UNIX第6版公布后 ,C语言的突出优点才引起人们普遍注意1977年出现了不依赖于具体机器的C语言编译文本《可移植C语言编译程序》,使C移植到其它机器时所做的工作大大简化了,这也推动了UNIX *** 作系统迅速地在各种机器上实现例如,VAX,AT&T等计算机系统都相继开发了UNIX随着 UNIX的日益广泛使用,C语言也迅速得到推广C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成1978年以后,C语言已先后移植到大,中,小,微型机上,已独立于UNIX和PDP了现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一
以1978年发表的UNIX第7版中的C编译程序为基础,Brian WKernighan和 Dennis MRitchie(合称K&R)合著了影响深远了名著《The C Programming Lan- guage》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充 ,制定了新的标准,称为ANSI CANSI C比原来的标准C有了很大的发展K&R在1988年修改了他们的经典著作《The C Progra- mming Language》 ,按照ANSI C的标准重新写了该书1987年,ANSI C又公布了新标准--87 ANSI C 目前流行的C编译系统都是以它为基础的
计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。
1 机器语言
电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。
2 汇编语言
为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“M O V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。
3 高级语言
从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。经过努力,1 9 5 4年,第一个完全脱离机器硬件的高级语言—F O RT R A N问世了,4 0多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有F O RT R A N、A L G O L、C O B O L、B A S I C、L I S P、S N O B O L、P L / 1、P a s c a l、C、P R O L O G、A d a、C + +、V C、V B、D e l p h i、J AVA 等。
高级语言的发展也经历了从早期语言到结构化程序设计语言,从面向过程到非过程化程序语言的过程。相应地,软件的开发也由最初的个体手工作坊式的封闭式生产,发展为产业化、流水线式的工业化生产。
6 0年代中后期,软件越来越多,规模越来越大,而软件的生产基本上是人自为战,缺乏科学规范的系统规划与测试、评估标准,其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。这一切,极大地震动了计算机界,史称“软件危机”。人们认识到:大型程序的编制不同于写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。程序的设计应易于保证正确性,也便于验证正确性。1 9 6 9年,提出了结构化程序设计方法,1 9 7 0年,第一个结构化程序设计语言—P a s c a l语言出现,标志着结构化程序设计时期的开始。
8 0年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,人们不能干别的事,也无法动态地改变程序的执行方向。这和人们日常处理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面向过程,而应是面向具体的应用功能,也就是对象(o b j e c t)。其方法就是软件的集成化,如同硬件的集成电路一样,生产一些通用的、封装紧密的功能模块,称之为软件集成块,它与具体应用无关,但能相互组合,完成具体的应用功能,同时又能重复使用。对使用者来说,只关心它的接口(输入量、输出量)及能实现的功能,至于如何实现的,那是它内部的事,使用者完全不用关心,C + +、V B、D e l p h i就是典型代表。
高级语言的下一个发展目标是面向应用,也就是说:只需要告诉程序你要干什么,程序就能自动生成算法,自动进行处理,这就是非过程化的程序语言。
vc++是面向对象的高级语言
简单的说,编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
计算机虽然功能十分强大。可以供你上网、打游戏、管理公司人事关系等等,但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的“命令”。于是,我们要驯服它,只有通过一种方式——程序,这也是我们和计算机沟通的唯一方式。
程序也就是指令的集合,它告诉计算机如何执行特殊的任务。
写出程序后,再由特殊的软件将你的程序解释或翻译成计算机能够识别的“计算机语言”,然后计算机就可以“听得懂”你的话了,并会按照你的吩咐去做事了。因此,编程实际上也就是“人给计算机出规则”这么一个过程。
随计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
计算机所能识别的语言只有机器语言,即由构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
汇编语言的实质和机器语言是相同的,都是直接对硬件 *** 作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的 *** 作用命令的形式写出来。
汇编程序的每一句指令只能对应实际 *** 作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的 *** 作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令并且去掉了与具体 *** 作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。由于省略了很多细节,所以编程者也不需要具备太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。
从二十世纪60年代以后,计算机得到了突飞猛进的发展。似乎历史上没有任何一门科学的发展速度超过了计算机的发展,无论硬件、软件、还是网络都以惊人的速度向前发展。软件的发展速度和硬件一样,二十世纪九十年代中国的软件业还不是很成熟,而现在大大小小 的软件企业四处耸立,共享软件网上随处可见。不断发展的技术需要不断变化的程序员,例如,如今Visual Basic可以快速构建Windows下的应用程序,程序设计方面的技术不断发展着,不断引进新的概念、新的方法,如从结构化的C开始,当面向对象的思想被提出后,出现了C++,微软在C++的基础上为使用户构建win32应用程序更加方便,推出了Visual C++。这也就需要程序员也要不断的更新自己的技术。
目前常用的基本程序语言的种类比较繁多,比较简单的有:Pascal、c语言、qBasic、 Fortran、Visual Basic等等。但前几种都是在DOS下进行编程的工具,Visual Basic是在 Windows下进行应用程序设计的编程工具,现在一般的计算机用户几乎都不再使用DOS了,因此我们通常会选择Visual Basic作为初学者的编程工具。Visual Basic是Windows应用程序设计中最容易上手的编程工具,学习步骤也比较容易被初学者接受。对于刚开始学习编程的初学者来说,还是选择Visual Basic,学习编程语言不能想象着一步登天,一步一个脚印的学习才是最佳方法。
===============================================
C语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。
早期的 *** 作系统等系统软件主要是用汇编语言编写的(包括 UNIX *** 作系统在内)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行 *** 作),例如:对内存地址的 *** 作、位 *** 作等)。人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。于是,C语言就在这种情况下应运而生了。
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60。 1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了CPL(CombinedProgram- ming Language)语言。CPL语言在ALGOL 60的基础上接近了硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的Matin Richards对 CPL语言作了简化,推出了BCPL(Basic Combined Programming Language)语言。1970年美国贝尔实验室的 Ken Thompson以 BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的 B语言( 取 BCPL的第一个字母),并用 B语言写第一个UNIX *** 作系统,在PDP-7上实现。 1971年在PDP-11/20上实现了B语言,并写了UNIX *** 作系统。但B语言过于简单,功能有限。1972年至 1973年间,贝尔实验室的 DMRitchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母)。C语言既保持了BCPL和B语言的优点(精练、接近硬件),又克服了它们的缺点(过于简单、数据无类型等)。 最初的C语言只是为描述和实现UNIX *** 作系统提供一种工作语言而设计的。1973年,KThom- pson和DMritchie两人合作把UNIX的90%以上用 C改写(UNIX第5版。原来的 UNIX *** 作系统是1969年由美国的贝尔实验室的 KThompson和DMRitchie开发成功的,是用汇编语言写的)。
后来,C语言多次作了改进,但主要还是在贝尔实验室内部使用。直到1- 975年UNIX第6版公布后 ,C语言的突出优点才引起人们普遍注意。1977年出现了不依赖于具体机器的C语言编译文本《可移植C语言编译程序》,使C移植到其它机器时所做的工作大大简化了,这也推动了UNIX *** 作系统迅速地在各种机器上实现。例如,VAX,AT&T等计算机系统都相继开发了UNIX。随着 UNIX的日益广泛使用,C语言也迅速得到推广。C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成。1978年以后,C语言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP了。现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一。
以1978年发表的UNIX第7版中的C编译程序为基础,Brian WKernighan和 Dennis MRitchie(合称K&R)合著了影响深远了名著《The C Programming Lan- guage》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C。1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充 ,制定了新的标准,称为ANSI C。ANSI C比原来的标准C有了很大的发展。K&R在1988年修改了他们的经典著作《The C Progra- mming Language》 ,按照ANSI C的标准重新写了该书。1987年,ANSI C又公布了新标准--87 ANSI C 。目前流行的C编译系统都是以它为基础的。
==================================================
C++ 是脱胎自 C 语言的一种中级语言 从计算机角度看, 它可以嵌入ASM等低端语言; 从面向对象的程序设计角度看, 它有具备OOP的三个基本特征 -- 抽象, 封装和继承; 同时从市场角度来看, 它又不是纯面向对象, 其实那些纯粹的面向对象语言的阵地只是在实验室
比较C语言 C++ 的几个显著变化或者解决的问题就是
1 名字空间的问题, 原始的C语言使用公共的名字空间, 这样无论是开发本人还是第三方团队都面临变量名字耗尽的问题 而C++提供独立的名字空间, 而且对象的引入也为名字空间提供了进一步划分
2 代码复用的问题, C语言使用函数库的方式或者DLL方式实现代码复用, 在接口稳定的前提下实现内部修改和数据及其实现的封装 C++提供了类库机制实现了具有层次的代码复用, 和多种继承机制, 同时重载等各种机制提供了进一步的复用实现 使得类库和代码更加容易维护, 虽然建立类库在人员, 组织等各个方面还是比较麻烦的
3 安全机制 因为有了类机制, 有一些初始化 *** 作可以自动实现
4 效率问题 因为C语言本质上是站在计算机立场的非常注重效率的问题, 但是事物总是具备矛盾的两面, 过于偏重效率和软件危机的出现, 反而增加了程序设计的难度 而OOA的现实世界角度的考虑问题更加贴近自然, 使得代码或者程序更加具备稳定性, 可扩展性和可维护性
为此, 和经典物理同量子物理一样 C/C++ 今天在不同领域各自发挥着最大的效率
没有谁是天生就会的,只要你肯学,没有基础肯定也能学会,因为所有的人都是从没有基础学起的
C语言是国际上广泛流行的,很有发展前途的计算机高级语言它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件
早期的 *** 作系统等系统软件主要是用汇编语言编写的(包括 UNIX *** 作系统在内)由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行 *** 作),例如:对内存地址的 *** 作,位 *** 作等)人们设想能否找到一种既具有一般高级语言特性, 又具有低级语言特性的语言,集它们的优点于一身于是,C语言就在这种情况下应运而生了
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60 1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序1963年英国的剑桥大学推出了CPL(CombinedProgram- ming Language)语言CPL语言在ALGOL 60的基础上接近了硬件一些,但规模比较大,难以实现1967年英国剑桥大学的Matin Richards对 CPL语言作了简化,推出了BCPL(Basic Combined Programming Language)语言1970年美国贝尔实验室的 Ken Thompson以 BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的 B语言( 取 BCPL的第一个字母),并用 B语言写第一个UNIX *** 作系统,在PDP-7上实现 1971年在PDP-11/20上实现了B语言,并写了UNIX *** 作系统但B语言过于简单,功能有限1972年至 1973年间,贝尔实验室的 DMRitchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母)C语言既保持了BCPL和B语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等) 最初的C语言只是为描述和实现UNIX *** 作系统提供一种工作语言而设计的1973年,KThom- pson和DMritchie两人合作把UNIX的90%以上用 C改写(UNIX第5版原来的 UNIX *** 作系统是1969年由美国的贝尔实验室的 KThompson和DMRitchie开发成功的,是用汇编语言写的)
后来,C语言多次作了改进,但主要还是在贝尔实验室内部使用直到1- 975年UNIX第6版公布后 ,C语言的突出优点才引起人们普遍注意1977年出现了不依赖于具体机器的C语言编译文本《可移植C语言编译程序》,使C移植到其它机器时所做的工作大大简化了,这也推动了UNIX *** 作系统迅速地在各种机器上实现例如,VAX,AT&T等计算机系统都相继开发了UNIX随着 UNIX的日益广泛使用,C语言也迅速得到推广C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成1978年以后,C语言已先后移植到大, 中,小,微型机上,已独立于UNIX和PDP了现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一
以1978年发表的UNIX第7版中的C编译程序为基础,Brian WKernighan和 Dennis MRitchie(合称K&R)合著了影响深远了名著《The C Programming Lan- guage》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充 ,制定了新的标准,称为ANSI CANSI C比原来的标准C有了很大的发展K&R在1988年修改了他们的经典著作《The C Progra- mming Language》 ,按照ANSI C的标准重新写了该书1987年,ANSI C又公布了新标准--87 ANSI C 目前流行的C编译系统都是以它为基础的
能将高级语言编写的源程序转换成目标程序的是(B、编译程序)。
以下类型选项中,不属于C语言的类型是(A、signed short)
下列叙述中,合法的C语言赋值语句是(B、i++;)。
若变量c为char类型,能正确判断出c为小写字母的表达式为(D、(c>='a')&& (c<='z'))。
若有int a[4][5];则数组a包含的元素个数是(D、20)。
在主函数中定义的变量(A、只有主函数中有效。)。
若有func((v1,v2),(v3,v4,v5),v6)调用,说明函数func有(A、3)个参数。
若有int a[10];p=a;,则(C、p++可以使p指向下一元素,即a[1]的首地址。)。
设有数组定义:char array[]="Chian";,则数组所占有的存储空间为(B、6)个字节。
下列函数中,不能用于对文件进行输入输出 *** 作的是(B、printf() )。
以上就是关于编译原理pdf全部的内容,包括:编译原理pdf、请说出C语言程序上机的基本步骤,并说明扩展名 c 、 obj 、 exe 的含义、c+是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)