《国外著名高等院校信息科学与技术优秀教材•编译原理 技术与工具(第2版)(英文版)》共12章。第一章是些关于学习动机的资料,同时也给出了一些关于计算机体系结构和程序设计语言原理的背景知识。第二章开发了一个缩微的编译器,并介绍了很多重要的概念,这些概念将在后面的各个章节中深入介绍。这个编译器本身在附录中给出。第三章讨论了词法分析、正则表达式、有穷状态自动机和词法分析器的生成工具,这些内容是各种正文处理的基础。第四章讨论了主流的语法分析方法,包括自项向下方法(递归下降法,LL技术)和自底向上方法(LR技术和它的变体)。第五章介绍了语法制导定义和语法制。
Alfred V. Aho是哥伦比亚大学的Lawrence Gussman计算机科学教授。Aho教授多次获奖,其中包括哥伦比亚校友会颁发的2003年度Great Teacher奖和电子与电器工程师协会的Jonh von Neumann奖章。他是美国国家工程院院士,以及ACM和IEEE的会员。
Monica S. Lam是斯坦福大学的计算机科学教授。她曾经是Tensilica的首席科学家,并且是moka5的创建者和首席执行官。她领导了SUIF项目。该项目开发了最流行的研究性编译器之一,并首创了很多在工业界得到应用的编译技术。
Ravi Sethi发起了Avaya公司的研究组织,并且是Avaya实验室的主管。之前他曾经是Bell实验室的高级副总裁,并且是Lucent科技的通信软件的首席技术官。他曾经在Pennsylvania州立大学和Arizona大学拥有教职,并在Priceton大学和Rutgers大学任教。他是ACM的会员。
Jeffery D. Ullman是Gradiance公司的首席执行官和Standford大学的Stanford W. Ascherman计算机科学(名誉退休)教授。他的研究兴趣包括数据库理论、数据库集成、数据挖掘和利用信息基础软件的教育技术。他是美国国家工程院的院士,ACM的会员,并且是Karlstrom奖和Knuth奖的获得者。
Insanely abstruse and convoluted. Reads like something written to deliberately confuse readers. Not to mention you have to flip the book nonstop for formulas/figures dozens of pages earlier.(It doesn't even have a pdf version!!!) Coupled with a prof who tal...
评分第一次读,刚读完第完7章。词法分析对同类对象整合,让语法分析器集中在解析程序的结构而不是找同类对象,语法分析器解析源程序的构造,产生式从里到外按顺序一个一个弹出,具体代表什么意思,比如是求值还是打印排版,或者生成机器代码,需要语义属性附加在产生式上面,一般程...
评分看了有关静态分析的几章,书中有相关算法的讲解,非常细致。总的感觉是适合本科生教学,研究生可能会觉得它有点罗嗦,不够直截了当,切入主题。
评分个人觉得中文翻译有些问题,倒不如看原版反而觉得某些概念更为清晰,看完了前七章,觉得对编程语言有了更为深刻的理解,读完这本书大家可以试着写一个有词法分析和语法分析的计算器,算是对知识的一种运用吧!你不一定要去做编译器,但是最好对编译器的运行机制和原理有个了解...
评分第一次读,刚读完第完7章。词法分析对同类对象整合,让语法分析器集中在解析程序的结构而不是找同类对象,语法分析器解析源程序的构造,产生式从里到外按顺序一个一个弹出,具体代表什么意思,比如是求值还是打印排版,或者生成机器代码,需要语义属性附加在产生式上面,一般程...
在我接触《编译原理:技术与工具》这本书之前,我总觉得编译器是一个神秘而难以捉摸的黑盒子,里面充满了晦涩难懂的理论。然而,当我深入阅读这本书后,我的看法彻底改变了。作者以一种非常系统化、结构化的方式,将编译器这个复杂的系统,分解成一个个易于理解的模块,并为每一个模块都提供了清晰的理论阐述和生动的实践指导。 书中对词法分析的讲解,从最基本的正则表达式匹配,到自动机理论的引入,再到Lex/Flex工具的应用,构成了一个完整的学习闭环。我特别喜欢书中关于如何处理关键字、标识符、运算符等不同类型Token的示例,这些细致入微的讲解,让我能够清晰地理解源代码是如何被“词化”的。 语法分析部分,是本书的重点之一。作者深入浅出地讲解了LL(1)和LR(1)解析技术,并通过大量的图示和解析过程的模拟,让读者能够直观地理解移进-归约、归约-归约冲突的产生原因及解决方法。我曾经尝试过用YACC/Bison来构建一个自定义语言的解析器,书中提供的详细步骤,让我能够快速上手,并解决在开发过程中遇到的各种问题。 语义分析章节,更是将编译器的“智能”体现得淋漓尽致。符号表的管理、类型检查、作用域的划分,这些内容都让我认识到,编译器不仅仅是简单的模式匹配,它还需要理解代码的含义和上下文。我曾尝试过为一个简单的函数调用实现类型检查,书中提供的指导让我能够构建一个相对健壮的类型系统。 此外,书中对代码优化的论述,也让我受益匪浅。从简单的常量传播到复杂的循环优化,作者都进行了深入的剖析。这部分内容让我对如何写出更高效的代码有了更深刻的认识,也让我明白了编译器是如何帮助我们实现性能提升的。 总而言之,《编译原理:技术与工具》是一本集理论深度与实践指导于一体的优秀技术书籍。它不仅为我打下了坚实的编译原理基础,更在我的实际开发中提供了宝贵的参考。这本书是我计算机科学学习道路上的重要里程碑,让我能够更自信地探索软件世界的奥秘。
评分在我看来,《编译原理:技术与工具》这本书,不仅仅是一本技术手册,更是一份引领我深入理解计算机科学核心机制的地图。作者以其深厚的功底和严谨的教学方法,将一个看似艰涩复杂的编译过程,梳理得井井有条,逻辑清晰。 本书对于词法分析的讲解,从基础的正则表达式理论,到有限自动机的构建,再到Lex/Flex等工具的实际应用,构成了一个完整的知识链条。我尤其欣赏书中对如何处理关键字、标识符、字面量等不同类型的Token的细致描述,这让我能够清晰地看到源代码是如何被分解成一个个有意义的“积木块”。 在语法分析层面,作者对LL(1)和LR(1)解析技术的深入剖析,以及对解析表构造和解析过程的生动展示,让我对“语法”这一概念有了更深刻的理解。我曾尝试过用YACC/Bison来构建一个自定义语言的解析器,在解决移进-归约冲突的过程中,书中提供的详细步骤和分析方法,成为了我最得力的助手。 语义分析章节,更是让我领略到编译器的“智能”所在。符号表的构建和管理,类型检查的实现,作用域规则的确定,这些内容都让我看到了编译器在理解代码含义和上下文方面的强大能力。我曾尝试过为一个简单的语言实现类型推导,书中关于类型系统设计的思路,为我提供了宝贵的启发。 代码优化部分,则是本书的精髓所在。作者详细介绍了各种优化技术,如常量传播、循环优化、函数内联等,并解释了它们是如何提升程序执行效率的。我曾尝试过运用书中的优化思想来改进我的代码,这让我对“性能”有了更深刻的认识,也让我明白了编译器是如何帮助我们实现这一目标的。 总而言之,《编译原理:技术与工具》是一本集理论深度与实践指导于一身的杰作。它不仅为我打下了坚实的编译原理基础,更在我的实际开发工作中提供了源源不断的灵感和帮助。这本书是我在计算机科学领域探索之旅中,最值得信赖的伙伴。
评分在我过去的学习和工作中,我曾多次接触到各种编程语言,但总是觉得对它们的底层实现知之甚少。《编译原理:技术与工具》这本书,就像一把钥匙,为我解开了编译器的神秘面纱。作者以一种高度系统化和逻辑化的方式,将复杂的编译过程,分解成一个个易于理解的阶段。 我特别欣赏书中在介绍词法分析时,对正则表达式和有限自动机的深入讲解。作者并没有仅仅停留在理论层面,而是通过生动的图示和实际的例子,展示了如何利用这些理论来构建词法分析器。我对书中关于如何处理关键字、标识符以及各种分隔符的讲解印象尤为深刻,这让我明白了源代码是如何被一步步地转化为有意义的Token的。 在语法分析方面,本书对LL(1)和LR(1)解析技术的详细阐述,以及对解析表构造过程的清晰说明,让我对如何确保代码的语法正确性有了全新的认识。我曾尝试过用YACC/Bison来构建一个简单的计算器,在理解和解决语法冲突的过程中,书中所提供的指导,让我受益匪浅。 语义分析章节,则让我看到了编译器在理解代码含义方面的“智能”。符号表的管理、类型检查、作用域规则的确定,这些内容都让我认识到,编译器不仅仅是一个简单的“翻译员”,它更是一个能够理解代码逻辑和语义的“分析师”。我曾尝试过为一个简单的语言设计类型系统,书中关于类型推导和类型检查的讲解,为我提供了宝贵的思路。 代码优化部分,更是本书的精华所在。作者深入讲解了各种优化技术,如常量传播、循环优化、函数内联等,并详细阐述了它们的工作原理以及对程序性能的影响。我曾尝试过运用书中的优化思想来改进我的代码,这让我对如何编写高效的程序有了更深刻的理解。 总而言之,《编译原理:技术与工具》是一本集理论精深与实践指导于一体的优秀著作。它不仅为我构建了扎实的编译原理知识体系,更在我的实际开发中提供了宝贵的参考。这本书是我在计算机科学领域探索过程中,不可或缺的良师益友。
评分拿到这本《编译原理:技术与工具》后,我一直将其视为我的“圣经”,尤其是在我攻读计算机科学博士学位期间。那段时间,我对编译器底层的运作原理充满了好奇,但市面上的书籍要么过于理论化,要么只聚焦于某个特定的工具,缺乏系统性的梳理。直到我遇到了这本书,一切都豁然开朗。它并没有回避那些令人望而生畏的理论概念,比如词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成,而是用一种非常清晰、逻辑性极强的方式将它们层层剖析。 作者在讲解过程中,反复强调了理论与实践的结合。不仅仅是罗列算法和数据结构,更是深入探讨了这些理论是如何在实际的编译器开发中得到应用的。书中对LALR(1)解析器生成器、YACC/Bison、Lex/Flex等工具的介绍,更是让我受益匪浅。我曾经尝试自己构建一个简单的编译器,过程中遇到了不少瓶颈,而这本书就像一位经验丰富的导师,在我迷茫时指点迷津。它详细介绍了如何使用这些工具来自动生成解析器,以及如何处理各种语法错误。 更令人赞赏的是,书中对代码优化的论述。这部分内容通常是编译器技术中最具挑战性也最吸引人的地方。作者并没有止步于介绍几种基本的优化技术,比如常量折叠、死代码删除,而是深入到更复杂的控制流分析、数据流分析,甚至是一些关于机器无关和机器相关的优化策略。这部分内容的深入性,让我对编译器如何提升程序执行效率有了全新的认识。我记得当时为了理解一个关于循环展开的优化,我反复阅读了好几遍,最终才恍然大悟。 书中的示例代码也非常贴切,它们不是那种为了演示而随意拼凑的片段,而是真正具有指导意义的、可以运行的例子。通过对这些示例代码的阅读和实践,我不仅巩固了书本上的理论知识,更学会了如何将这些理论转化为实际的代码。我曾经尝试着去修改书中的一些示例,比如加入一个新的语法规则,或者实现一个简单的优化算法,这个过程让我对编译器的内部机制有了更直观的感受。 总而言之,这本书为我打开了一扇通往编译原理世界的大门,让我能够更深入地理解软件是如何被转化为机器能够执行的指令的。它的结构清晰,内容详实,理论与实践并重,是任何想要深入了解编译器技术的读者不可或缺的参考书。即使多年过去,当我再次翻阅这本书时,依然能从中汲取新的灵感和知识。它不仅仅是一本技术书籍,更是一份沉甸甸的学习经历的载体。
评分在我学习计算机科学的漫漫长路上,《编译原理:技术与工具》这本书无疑是最具启蒙意义的读物之一。它以其严谨的逻辑和详实的例证,将编译器这一复杂而抽象的领域,变得触手可及。本书并非单纯地陈述理论,而是将理论知识与实际工具的运用紧密结合,形成了一种独特的学习范式。 书中对词法分析的讲解,从正则表达式的抽象概念,到有限自动机的具体实现,再到Lex/Flex等工具的实际操作,形成了一条清晰的学习路径。我记得,当我第一次接触到Token流的概念时,书中通过生动的图示,展示了源代码如何被分解成一个个有意义的“词语”,这让我对“代码”这个概念有了全新的认识。 语法分析的部分,更是本书的重头戏。LL(1)和LR(1)解析技术的对比分析,以及对解析表的构造过程的详细阐述,让我对“语法”的理解上升到了一个新的高度。我曾尝试过用Bison来解析一个简单的数学表达式,在解决移进-归约冲突的过程中,我对书中所讲的LR(1)解析原理有了更深刻的体会。 语义分析章节,则将编译器的“智能”展现在了我面前。符号表的构建、类型检查、作用域规则的处理,这些内容都让我感受到编译器不仅仅是简单的“翻译器”,更是一个能够理解和分析代码语义的“智者”。我曾尝试过为一个简单的语言设计类型系统,书中的指导让我少走了很多弯路。 书中对代码优化的论述,更是让我对“效率”这个概念有了更深的理解。常量折叠、循环不变代码外提、死代码删除等技术,都让我看到了编译器如何“润物细无声”地提升程序的运行速度。我曾尝试过手动对我的代码进行一些简单的优化,书中的思路给了我很大的启发。 总而言之,《编译原理:技术与工具》不仅仅是一本技术书籍,它更是一本关于“理解”的书。它帮助我理解了代码的本质,理解了语言的结构,理解了程序的执行过程。这本书为我打开了计算机科学的另一扇大门,让我能够更深入地洞察软件世界的奥秘,并在未来的技术道路上,拥有更开阔的视野。
评分在翻阅《编译原理:技术与工具》的过程中,我深刻体会到作者在知识组织上的精妙之处。整本书的脉络清晰,逻辑严谨,从最基础的词法分析开始,层层递进,逐步深入到更复杂的语义分析和代码优化。每个章节都建立在前一章节的基础上,确保了读者能够循序渐进地掌握编译器的核心概念。 作者在讲解词法分析时,并未满足于简单的正则表达式匹配,而是深入探讨了有限自动机(Finite Automata)的原理,并展示了如何将其应用于词法分析器(Lexer)的构建。书中对各种字符集、关键字、标识符的处理方式,以及如何生成Token流,都进行了细致的阐述。我记得自己曾尝试过用C语言手动实现一个简单的Lexer,书中的指导让我少走了不少弯路。 关于语法分析的部分,更是令人印象深刻。作者不仅详细介绍了LL(1)和LR(1)等主流的解析技术,还对它们各自的优缺点进行了比较分析。对于LR(1)解析,书中提供了构造解析表的详细步骤,并且通过图示化的方式,清晰地展示了移进-归约冲突和归约-归约冲突的产生及解决办法。这部分内容对我理解如何编写无歧义的语法规则至关重要。 书中对语义分析的论述也相当到位。从类型检查、变量作用域的确定,到函数调用的语义处理,都进行了详尽的讲解。作者引入了符号表(Symbol Table)这一核心数据结构,并阐述了它在存储和管理程序中的各种标识符信息方面的关键作用。我曾尝试过为自己的小型编程语言设计符号表,这本书提供了宝贵的思路。 除了理论知识,本书对实际工具的介绍也让我受益匪浅。Lex/Flex和YACC/Bison的详细使用指南,以及它们在构建编译器中的实际应用案例,都让我对如何将理论知识转化为可执行的程序有了更清晰的认识。我甚至按照书中的例子,尝试用Bison构建了一个小型语法分析器,这个实践过程极大地加深了我对语法规则的理解。 总而言之,《编译原理:技术与工具》是一本真正能带领读者走进编译世界的技术著作。它不仅传授了深厚的理论知识,更提供了实用的工具指导,让读者能够在实践中巩固所学。这本书为我打下了坚实的计算机科学基础,让我能够更深入地理解软件的运作机制,并为我日后的技术探索指明了方向。
评分在我深入钻研《编译原理:技术与工具》这本书之前,我对编译器这个概念的理解,一直停留在“把代码变成机器语言”这一层面。这本书的出现,彻底颠覆了我的认知,它以一种极其系统和详尽的方式,向我展示了编译器内部的每一个精密环节。 从词法分析开始,作者就详细介绍了正则表达式如何被转化为有限自动机,以及如何利用这些自动机来识别源代码中的Token。书中对各种Token的定义和生成过程的描述,清晰而富有条理。我曾尝试过用C语言手动实现一个简单的词法分析器,书中的指导让我对Token的生成和管理有了更深刻的理解。 语法分析部分,是本书的另一个亮点。作者对LL(1)和LR(1)解析技术的深入剖析,以及对解析表构造和解析过程的详细演示,都让我对语法规则的严谨性和解析的复杂性有了全新的认识。我曾尝试过用Bison来定义一个小型语言的语法规则,并生成解析器,这个过程让我真正体会到了“工欲善其事,必先利其器”的含义。 语义分析章节,则将编译器的“智慧”展现得淋漓尽致。符号表的构建和管理,类型检查的实现,作用域规则的处理,这些都让我看到了编译器在理解代码含义和上下文方面的能力。我曾尝试过为我的项目中一个简单的变量声明和使用功能添加类型检查,书中关于作用域和类型系统的论述,为我提供了宝贵的参考。 代码优化部分,更是让我对“效率”有了更深层次的理解。作者详细介绍了各种优化技术,如常量折叠、死代码删除、循环优化等,并解释了它们对程序性能的提升作用。我曾尝试过运用书中的优化思路来改进我的程序,这让我对如何写出更高效的代码有了更深刻的认识。 总而言之,《编译原理:技术与工具》是一本真正意义上的“圣经”。它不仅为我构建了扎实的编译原理理论基础,更提供了丰富实用的实践指导。这本书是我在计算机科学领域学习和探索过程中,不可或缺的宝贵财富,它为我打开了理解软件运行机制的更深层次的大门。
评分我一直认为,真正理解一门编程语言,不仅要掌握其语法和语义,更要了解它背后是如何被执行的。《编译原理:技术与工具》这本书,恰恰满足了我对这一层面的探求。作者在书中,以一种循序渐进的方式,将编译器的各个阶段,如词法分析、语法分析、语义分析、中间代码生成、代码优化以及目标代码生成,都进行了详尽的阐述。 我尤其喜欢书中对解析技术的讲解。作者不仅介绍了递归下降、LL(1)、LR(1)等经典解析方法,还深入分析了它们的原理和应用场景。特别是LR(1)解析,书中通过详细的步骤,展示了如何构造解析表,以及如何处理各种解析冲突,这让我对语法规则的严谨性有了更深的体会。我曾尝试过手动模拟一个LR(1)解析过程,书中的清晰讲解帮助我一步步地完成了这个挑战。 书中对语义分析的论述,也让我印象深刻。符号表的建立和管理,类型检查的实现,作用域的规则,这些内容都让我看到了编译器在理解代码含义方面所做的努力。我曾尝试过为一个简单的算术表达式实现类型检查,书中关于类型推导的思路,对我启发很大。 代码优化部分,更是让这本书的价值倍增。作者详细介绍了各种优化技术,例如常量折叠、死代码删除、循环展开等,并解释了它们是如何提高程序执行效率的。通过学习这些技术,我不仅能够更好地编写优化过的代码,还能理解编译器是如何为我们做这些工作的。 另外,书中对Lex/Flex和YACC/Bison等工具的详细介绍和使用方法,更是将理论与实践紧密地结合起来。我曾按照书中的示例,用这些工具构建了一个简单的文本处理器,这个过程让我深刻体会到工具链在编译器开发中的重要性。 总而言之,《编译原理:技术与工具》是一本兼具理论深度和实践指导的杰作。它为我打开了理解程序执行机制的大门,让我对软件开发有了更全面的认识。这本书不仅是学习编译原理的优秀教材,更是我深入理解计算机科学的宝贵财富。
评分在我从事软件开发多年的职业生涯中,无数次与各种编程语言打交道,但直到接触到《编译原理:技术与工具》这本书,我才真正理解到它们是如何被“翻译”成机器能理解的语言的。这本书以一种非常务实的方式,揭示了编译器这一复杂系统的内部运作。 我尤其对书中关于代码优化的章节印象深刻。作者并没有简单地罗列几种优化技术,而是深入探讨了这些技术背后的原理和算法。例如,数据流分析在常量传播、杀死无用代码等优化中的应用,以及循环优化技术如循环展开、循环融合等,都讲解得非常透彻。我曾经为了优化一段性能瓶颈的代码,反复翻阅这本书,学习如何运用书中的优化思想来改进我的代码。 书中对中间表示(IR)的详尽论述也让我大开眼界。作者介绍了多种IR形式,如三地址码、抽象语法树(AST)以及更高级的SSA(Static Single Assignment)形式,并阐述了它们在编译器设计中的作用,特别是在代码优化阶段。理解IR的转换过程,对于我理解编译器如何进行机器无关的优化非常有帮助。 此外,书中对目标代码生成的详细描述,也让我对如何将中间代码映射到具体的机器指令有了更深刻的认识。作者讲解了寄存器分配、指令选择和指令调度等关键技术,以及它们如何影响最终生成代码的效率。这部分内容对于深入理解底层性能调优非常有价值。 这本书的另一个亮点在于其对各种工具的实用性指导。Lex/Flex和YACC/Bison等工具的使用方法,以及如何利用它们快速构建编译器的前端,都讲解得非常详细。我曾尝试过使用这些工具来为我的项目开发一个定制的解析器,这个过程让我深刻体会到工具链在编译器开发中的重要性。 总而言之,《编译原理:技术与工具》不仅是一本理论性的著作,更是一本实践性的指南。它帮助我从一个“代码使用者”转变为一个更深刻的“代码理解者”,让我能够更有效地进行性能调优,并对编程语言的设计和实现有更深入的理解。这本书是我技术工具箱中不可或缺的一部分。
评分这本《编译原理:技术与工具》在我学习算法和数据结构的过程中,扮演了一个至关重要的角色。在接触到这本书之前,我对编译器的认识仅限于“将高级语言变成机器语言”这样一个模糊的概念。然而,这本书用一种系统性的方式,从词法分析、语法分析、语义分析、中间代码生成、代码优化到目标代码生成,一步步地揭示了编译器的内部运作机制。 我尤其欣赏书中对各种解析技术(如递归下降、LL(1)、LR(1))的详细讲解。作者不仅阐述了这些技术的原理,还通过大量的图示和清晰的文字说明,帮助读者理解它们的工作流程。特别是关于LR(1)解析的章节,我花了相当多的时间去钻研,书中提供的构造解析表的方法,让我能够一步步地模拟出解析过程,这对于我理解语法规则的匹配和冲突解决非常有帮助。 书中对编译器工具链的介绍也极具价值。作者深入讲解了Lex/Flex在词法分析中的应用,以及YACC/Bison在语法分析中的强大功能。我曾尝试使用这些工具来构建一个简单的计算器,亲身体验了如何定义词法规则和语法规则,并让工具自动生成解析代码。这个过程让我深刻体会到,理论知识与实际工具的结合,能够极大地提高开发效率,并减少人为错误。 另一让我印象深刻的部分是关于中间表示(Intermediate Representation, IR)的讨论。书中详细介绍了不同类型的IR,如三地址码、抽象语法树(AST)等,并阐述了它们在编译器设计中的作用。这部分内容让我理解了编译器如何在不同阶段对代码进行转换和优化,而IR则充当了中间的桥梁。对IR的理解,也帮助我更好地理解后续的代码优化章节。 这本书的优点还在于它对代码优化技术的深入探讨。从简单的常量折叠、死代码删除,到复杂的循环优化、函数内联,作者都进行了细致的剖析。通过理解这些优化技术,我不仅能够编写出更高效的代码,还能更深刻地理解编译器是如何帮助我们实现这一目标的。这本书为我未来的软件开发实践打下了坚实的基础,让我能够更自信地应对性能优化方面的挑战。
评分难度没有传说那么高,静心看的话,可以算是科普文章了。一如既往的丝般顺滑。偶尔发现难懂的地方往往马上就能看到有例子解释,所以还是挺流畅的。第十二章讲得好混乱。
评分革命尚未成功,同志尚须努力。 2013-2-21
评分买了这本书,看了几页看不下去了。我希望这辈子能把这本书看完,还是比较有意思的。。停止
评分读一半烂尾了,以后再读
评分读了前面部分,后面的希望过年前能看完吧~~
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2026 book.quotespace.org All Rights Reserved. 小美书屋 版权所有