手把手教你实现一个编译器
系统掌握编译器核心技术;
手动实现解释型和编译型语言;
4 大案例剖析编译技术的实际应用;
编译技术的趋势解读。
你能通过这门课,实现写出一个编译器的愿望,还能通过 SQL 解析器、报表工具、字节码生成等小练习锻炼自己的动手能力。当然了,你还可以解锁更多应用编译原理的业务场景,将知识活学活用。相信只要沉下心去学习研究,掌握编译技术指日可待!
实现一门脚本语言:通过具体实例,带你了解词法分析、语法分析、语义分析的原理,实现一门脚本语言,并用工具提升效率。
实现一门编译型语言:带你了解如何生成目标代码和对代码进行优化,并引入 LLVM 工具,最后生成可执行的文件能支持即时编译,并经过了多层优化。
面向未来的编程语言:人工智能与编译技术结合是否会出现人工智能编程?这部分是对编译技术发展趋势的一些分析,这些分析会帮助你更好地把握未来技术发展的脉搏。
├──jk34101-编译原理之美
| ├──00丨开篇词 (1讲)
| | ├──00开篇词丨为什么你要学习编译原理?.html 3.20M
| | ├──00开篇词丨为什么你要学习编译原理?.mp3 4.00M
| | └──00开篇词丨为什么你要学习编译原理?.pdf 2.96M
| ├──01丨实现一门脚本语言 · 原理篇 (13讲)
| | ├──01丨理解代码:编译器的前端技术.html 4.00M
| | ├──01丨理解代码:编译器的前端技术.mp3 7.47M
| | ├──01丨理解代码:编译器的前端技术.pdf 3.48M
| | ├──02丨正则文法和有限自动机:纯手工打造词法分析器.html 3.21M
| | ├──02丨正则文法和有限自动机:纯手工打造词法分析器.mp3 6.14M
| | ├──02丨正则文法和有限自动机:纯手工打造词法分析器.pdf 2.86M
| | ├──03丨语法分析(一):纯手工打造公式计算器.html 2.75M
| | ├──03丨语法分析(一):纯手工打造公式计算器.mp3 7.09M
| | ├──03丨语法分析(一):纯手工打造公式计算器.pdf 2.21M
| | ├──04丨语法分析(二):解决二元表达式中的难点.html 2.41M
| | ├──04丨语法分析(二):解决二元表达式中的难点.mp3 6.40M
| | ├──04丨语法分析(二):解决二元表达式中的难点.pdf 2.43M
| | ├──05丨语法分析(三):实现一门简单的脚本语言.html 1.92M
| | ├──05丨语法分析(三):实现一门简单的脚本语言.mp3 6.31M
| | ├──05丨语法分析(三):实现一门简单的脚本语言.pdf 1.62M
| | ├──06丨编译器前端工具(一):用Antlr生成词法、语法分析器.html 2.64M
| | ├──06丨编译器前端工具(一):用Antlr生成词法、语法分析器.mp3 7.55M
| | ├──06丨编译器前端工具(一):用Antlr生成词法、语法分析器.pdf 2.40M
| | ├──07丨编译器前端工具(二):用Antlr重构脚本语言.html 2.98M
| | ├──07丨编译器前端工具(二):用Antlr重构脚本语言.mp3 7.20M
| | ├──07丨编译器前端工具(二):用Antlr重构脚本语言.pdf 2.66M
| | ├──08丨作用域和生存期:实现块作用域和函数.html 2.76M
| | ├──08丨作用域和生存期:实现块作用域和函数.mp3 6.36M
| | ├──08丨作用域和生存期:实现块作用域和函数.pdf 2.83M
| | ├──09丨面向对象:实现数据和方法的封装.html 2.71M
| | ├──09丨面向对象:实现数据和方法的封装.mp3 6.22M
| | ├──09丨面向对象:实现数据和方法的封装.pdf 1.87M
| | ├──10丨闭包:理解了原理,它就不反直觉了.html 2.96M
| | ├──10丨闭包:理解了原理,它就不反直觉了.m4a 10.41M
| | ├──10丨闭包:理解了原理,它就不反直觉了.pdf 3.24M
| | ├──11丨语义分析(上):如何建立一个完善的类型系统?.html 2.69M
| | ├──11丨语义分析(上):如何建立一个完善的类型系统?.m4a 11.91M
| | ├──11丨语义分析(上):如何建立一个完善的类型系统?.pdf 2.39M
| | ├──12丨语义分析(下):如何做上下文相关情况的处理?.html 1.45M
| | ├──12丨语义分析(下):如何做上下文相关情况的处理?.m4a 11.29M
| | ├──12丨语义分析(下):如何做上下文相关情况的处理?.pdf 1.36M
| | ├──13丨继承和多态:面向对象运行期的动态特性.html 2.18M
| | ├──13丨继承和多态:面向对象运行期的动态特性.m4a 10.82M
| | └──13丨继承和多态:面向对象运行期的动态特性.pdf 2.03M
| ├──02丨实现一门脚本语言 · 应用篇 (2讲)
| | ├──14丨前端技术应用(一):如何透明地支持数据库分库分表?.html 2.15M
| | ├──14丨前端技术应用(一):如何透明地支持数据库分库分表?.m4a 11.15M
| | ├──14丨前端技术应用(一):如何透明地支持数据库分库分表?.pdf 1.84M
| | ├──15丨前端技术应用(二):如何设计一个报表工具?.html 2.48M
| | ├──15丨前端技术应用(二):如何设计一个报表工具?.m4a 9.63M
| | └──15丨前端技术应用(二):如何设计一个报表工具?.pdf 2.26M
| ├──03丨实现一门脚本语言 · 算法篇 (3讲)
| | ├──16丨NFA和DFA:如何自己实现一个正则表达式工具?.html 4.54M
| | ├──16丨NFA和DFA:如何自己实现一个正则表达式工具?.m4a 11.50M
| | ├──16丨NFA和DFA:如何自己实现一个正则表达式工具?.pdf 4.76M
| | ├──17丨First和Follow集合:用LL算法推演一个实例.html 4.02M
| | ├──17丨First和Follow集合:用LL算法推演一个实例.m4a 12.42M
| | ├──17丨First和Follow集合:用LL算法推演一个实例.pdf 4.03M
| | ├──18丨移进和规约:用LR算法推演一个实例.html 8.94M
| | ├──18丨移进和规约:用LR算法推演一个实例.m4a 13.51M
| | └──18丨移进和规约:用LR算法推演一个实例.pdf 9.66M
| ├──04丨实现一门脚本语言 · 热点答疑与用户故事 (2讲)
| | ├──19丨案例总结与热点问题答疑:对于左递归的语法,为什么我的推导不是左递归的?.html 1.89M
| | ├──19丨案例总结与热点问题答疑:对于左递归的语法,为什么我的推导不是左递归的?.m4a 9.96M
| | ├──19丨案例总结与热点问题答疑:对于左递归的语法,为什么我的推导不是左递归的?.pdf 1.65M
| | ├──用户故事丨因为热爱,所以坚持.html 1.21M
| | └──用户故事丨因为热爱,所以坚持.pdf 1.18M
| ├──05丨编译原理 · 期中考试周 (1讲)
| | ├──期中考试丨来赴一场100分的约定吧!.html 884.26kb
| | ├──期中考试丨来赴一场100分的约定吧!.m4a 2.59M
| | └──期中考试丨来赴一场100分的约定吧!.pdf 666.58kb
| ├──06丨实现一门编译型语言 · 原理篇 (12讲)
| | ├──20丨高效运行:编译器的后端技术.html 2.09M
| | ├──20丨高效运行:编译器的后端技术.m4a 10.95M
| | ├──20丨高效运行:编译器的后端技术.pdf 1.57M
| | ├──21丨运行时机制:突破现象看本质,透过语法看运行时.html 4.65M
| | ├──21丨运行时机制:突破现象看本质,透过语法看运行时.m4a 11.38M
| | ├──21丨运行时机制:突破现象看本质,透过语法看运行时.pdf 3.61M
| | ├──22丨生成汇编代码(一):汇编语言其实不难学.html 3.29M
| | ├──22丨生成汇编代码(一):汇编语言其实不难学.m4a 11.33M
| | ├──22丨生成汇编代码(一):汇编语言其实不难学.pdf 3.00M
| | ├──23丨生成汇编代码(二):把脚本编译成可执行文件.html 2.31M
| | ├──23丨生成汇编代码(二):把脚本编译成可执行文件.m4a 8.52M
| | ├──23丨生成汇编代码(二):把脚本编译成可执行文件.pdf 2.31M
| | ├──24丨中间代码:兼容不同的语言和硬件.html 2.25M
| | ├──24丨中间代码:兼容不同的语言和硬件.m4a 11.56M
| | ├──24丨中间代码:兼容不同的语言和硬件.pdf 1.95M
| | ├──25丨后端技术的重用:LLVM不仅仅让你高效.html 2.65M
| | ├──25丨后端技术的重用:LLVM不仅仅让你高效.m4a 12.45M
| | ├──25丨后端技术的重用:LLVM不仅仅让你高效.pdf 2.06M
| | ├──26丨生成IR:实现静态编译的语言.html 3.19M
| | ├──26丨生成IR:实现静态编译的语言.m4a 11.09M
| | ├──26丨生成IR:实现静态编译的语言.pdf 1.65M
| | ├──27丨代码优化:为什么你的代码比他的更高效?.html 4.03M
| | ├──27丨代码优化:为什么你的代码比他的更高效?.m4a 12.74M
| | ├──27丨代码优化:为什么你的代码比他的更高效?.pdf 2.45M
| | ├──28丨数据流分析:你写的程序,它更懂.html 6.42M
| | ├──28丨数据流分析:你写的程序,它更懂.m4a 11.52M
| | ├──28丨数据流分析:你写的程序,它更懂.pdf 4.17M
| | ├──29丨目标代码的生成和优化(一):如何适应各种硬件架构?.html 5.57M
| | ├──29丨目标代码的生成和优化(一):如何适应各种硬件架构?.m4a 11.62M
| | ├──29丨目标代码的生成和优化(一):如何适应各种硬件架构?.pdf 3.93M
| | ├──30丨目标代码的生成和优化(二):如何适应各种硬件架构?.html 5.19M
| | ├──30丨目标代码的生成和优化(二):如何适应各种硬件架构?.m4a 12.17M
| | ├──30丨目标代码的生成和优化(二):如何适应各种硬件架构?.pdf 3.59M
| | ├──加餐丨汇编代码编程与栈帧管理.html 3.63M
| | ├──加餐丨汇编代码编程与栈帧管理.m4a 9.67M
| | └──加餐丨汇编代码编程与栈帧管理.pdf 4.06M
| ├──07丨实现一门编译型语言 · 应用篇 (2讲)
| | ├──31丨内存计算:对海量数据做计算,到底可以有多快?.html 3.00M
| | ├──31丨内存计算:对海量数据做计算,到底可以有多快?.m4a 12.80M
| | ├──31丨内存计算:对海量数据做计算,到底可以有多快?.pdf 1.51M
| | ├──32丨字节码生成:为什么Spring技术很强大?.html 3.87M
| | ├──32丨字节码生成:为什么Spring技术很强大?.m4a 10.11M
| | └──32丨字节码生成:为什么Spring技术很强大?.pdf 2.30M
| ├──08丨实现一门编译型语言 · 扩展篇 (3讲)
| | ├──33丨垃圾收集:能否不停下整个世界?.html 3.85M
| | ├──33丨垃圾收集:能否不停下整个世界?.m4a 14.14M
| | ├──33丨垃圾收集:能否不停下整个世界?.pdf 2.76M
| | ├──34丨运行时优化:即时编译的原理和作用.html 2.64M
| | ├──34丨运行时优化:即时编译的原理和作用.m4a 10.11M
| | ├──34丨运行时优化:即时编译的原理和作用.pdf 1.37M
| | ├──35丨案例总结与热点问题答疑:后端部分真的比前端部分难吗?.html 1.49M
| | ├──35丨案例总结与热点问题答疑:后端部分真的比前端部分难吗?.m4a 10.98M
| | └──35丨案例总结与热点问题答疑:后端部分真的比前端部分难吗?.pdf 1.02M
| ├──09丨面向未来的编程语言 (3讲)
| | ├──36丨当前技术的发展趋势以及其对编译技术的影响.html 2.21M
| | ├──36丨当前技术的发展趋势以及其对编译技术的影响.m4a 13.38M
| | ├──36丨当前技术的发展趋势以及其对编译技术的影响.pdf 1.40M
| | ├──37丨云编程:云计算会如何改变编程模式?.html 2.46M
| | ├──37丨云编程:云计算会如何改变编程模式?.m4a 12.99M
| | ├──37丨云编程:云计算会如何改变编程模式?.pdf 1.53M
| | ├──38丨元编程:一边写程序,一边写语言.html 2.33M
| | ├──38丨元编程:一边写程序,一边写语言.m4a 10.36M
| | └──38丨元编程:一边写程序,一边写语言.pdf 1.46M
| └──10丨结束语 (1讲)
| | ├──结束语丨用程序语言,推动这个世界的演化.html 1.69M
| | ├──结束语丨用程序语言,推动这个世界的演化.m4a 7.89M
| | └──结束语丨用程序语言,推动这个世界的演化.pdf 1.53M
评论0