Ryo's blog

归档 · 2023

首页

关于

归档

BookRust

《Rust 编程第一课》

《陈天 · Rust 编程第一课》 一、所有权 脑图链接 所有权和生命周期是Rust和其它编程语言的主要区别,也是Rust其它知识点的基础。 1.1、变量在函数调用时发生了什么fn main() { // vec 动态数组因为大小在编译期无法确定,所以放在堆上, // 并且在栈上有一个包含了长度和容量的胖指针指向堆上的内存。 let data = vec![10, 42, 9, 8]; let v = 42; if let Some(pos) = find_pos(data, v) { println!("Found {} at {}", v, pos); } } fn find_pos(data: Vec<u32>, v: ..

更多
BookCompiler

《编译原理之美》

0、为什么你要学习编译原理? 1、理解代码:编译器的前端技术 1.1 词法分析Lexical Analysis 通常,编译器的第一项工作叫做词法分析。就像阅读文章一样,文章是由一个个的中文单词组成的。程序处理也一样,只不过这里不叫单词,而是叫做词法记号,英文叫 Token。 也可以用词法分析器的生成工具来生成,比如 Lex(或其 GNU 版本,Flex)。这些生成工具是基于一些规则来工作的,这些规则用正则文法表达,符合正则文法的表达式称为正则表达式。生成工具可以读入正则表达式,生成一种叫有限自动机的算法,来完成具体的词法分析工作。 不要被正则文法(Regular Grammar)和有限自动机(Finite-state Automaton,FSA,or Finite Automaton)吓到。正则文法是一..

更多