《CPython Internals》阅读笔记:p97-p117

《CPython Internals》学习第 7 天,p97-p117 总结,总计 21 页。

一、技术总结

1.词法分析(lexical analysis)

根据《Compilers-Principles, Techniques, and Tools》(《编译原理》第2版)第 5 页:The first phase of a compiler is called lexical analysis or scanning. The lexcical analyzer reads the stream of characters making up the source program and groups the characters into meaningful sequences called lexemes. For each lexeme, the lexical analyzer produces as output a token of the form <token-name, attribute-value> that is passes on to the subsequent phase, syntax analysis。

执行词法分析(lexical analysis)的 component 称为 lexical analyzer(有时候也称为lexer, scanner, tokenizer)。

2.关于parser-tokenizer的一疑问

p92, Creating a concrete syntax tree using a parser-tokenizer, or lexer.

p92,The CST is created from a tokenizer and a parser.

说实话,我不是很理解作者为什么要将编译流程画成这样,以及为什么要用 parser-tokenizer这个术语,这样真是太混乱了。

流程图以及第一句表明 lexer 的输出是 CST, 但是第二句 CST的输出来自于 tokenizer 和 parser,简直就是前后矛盾。lexer 的输出是 token, 所以才有 tokenizer 这个称呼。 CST 是 parser 的输出。

以及最后又流入到 compiler,也是很莫名其妙, lexer 和 parser 其实属于 compiler。

3.AST

p102, The structure is a representation of the CST called an abstract syntax tree (AST).

p111,Abstract syntax tree (AST): A contextual tree representation of Python's grammar and statements.

看完上面这两个定义哪个读者能不迷糊。

二、英语总结(生词:0)

无。

关于英语的注解同步更新汇总到 https://github.com/codists/English-In-CS-Books 仓库。

三、其它

Lexing and Parsing With Syntax Trees: 本章作者介绍比较混乱,如果读者不熟悉编译原理的知识,那么最好先补充下编译原理知识,这样才能更好的理解本章内容。

四、参考资料

1. 编程

(1) Anthony Shaw,《CPython Internals》:https://book.douban.com/subject/35405785/

2. 英语

(1) Etymology Dictionary:https://www.etymonline.com

(2) Cambridge Dictionary:https://dictionary.cambridge.org

欢迎搜索及关注:编程人(a_codists)

相关推荐
Ramble_Naylor26 分钟前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
Allen_LVyingbo1 小时前
NVIDIA CUDA Tile 在医疗计算中的算子形式化、算法重构与内核实现
大数据·python·算法·重构·知识图谱·健康医疗·数据库架构
云和数据.ChenGuang1 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
我命由我123453 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
青少儿编程课堂3 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛
atwednesday3 小时前
一文理解python中的task,协程,woker
python
用户0332126663674 小时前
使用 Python 在 Excel 中添加与删除筛选器
python·excel
1M554 小时前
AI应用后端工程(03):回答输出一半就断了:AI 流式接口如何定义成功与失败?
python·面试·职场和发展·计算机专业·agent开发
AI 编程助手GPT5 小时前
GPT 排的日志时间线差一小时?用 zoneinfo 复现夏令时回拨
人工智能·python·gpt
Thanks_ks5 小时前
【第 003 讲】全面认识 Python:语言起源与设计哲学 | 行业地位与流行趋势 | 技术优势与应用领域 | 技术边界与工程局限
人工智能·python·数据分析·编程语言·python 入门·web 开发·python 之禅