编译原理入门:词法分析器与 Flex/Bison 黄金搭档实战
在每一个程序员的学习生涯中,“编译器究竟是如何把一堆英文字符代码变成可执行程序的”往往是最令人着迷的谜题之一。 当你键入如下命令准备折腾编译器前端时: sudo apt-get install flex sudo apt-get install bison 你实际上已经推开了计算机科学中最经典、最精巧的技术大门:词法分析器(Lexer) 与 语法分析器(Parser)。 ...
在每一个程序员的学习生涯中,“编译器究竟是如何把一堆英文字符代码变成可执行程序的”往往是最令人着迷的谜题之一。 当你键入如下命令准备折腾编译器前端时: sudo apt-get install flex sudo apt-get install bison 你实际上已经推开了计算机科学中最经典、最精巧的技术大门:词法分析器(Lexer) 与 语法分析器(Parser)。 ...
在编写程序时,无论是使用 C/C++ 这种面向系统底层的语言,还是 Java、Go、Rust、Python 等拥有运行时环境的高级语言,程序最终都需要被加载到操作系统的虚拟内存中执行。 很多开发者在日常编码中常听到“变量在栈上”、“对象在堆中”、“全局变量存哪里”、“为什么递归太深会导致栈溢出”、“为什么堆内存容易产生碎片”等问题。要彻底理清这些概念,关键在于理解进程的虚拟内存空间布局(Virtual Memory Layout)。 ...