《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)

相关推荐
大模型真好玩31 分钟前
准确率飙升!GraphRAG如何利用知识图谱提升RAG答案质量(额外篇)——大规模文本数据下GraphRAG实战
人工智能·python·mcp
198932 分钟前
【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·近邻算法
applebomb42 分钟前
没合适的组合wheel包,就自行编译flash_attn吧
python·ubuntu·attention·flash
Chasing__Dreams1 小时前
python--杂识--18.1--pandas数据插入sqlite并进行查询
python·sqlite·pandas
彭泽布衣2 小时前
python2.7/lib-dynload/_ssl.so: undefined symbol: sk_pop_free
python·sk_pop_free
喜欢吃豆3 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp
一个处女座的测试3 小时前
Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
python·mysql·pytest
nananaij3 小时前
【Python基础入门 re模块实现正则表达式操作】
开发语言·python·正则表达式
蛋仔聊测试4 小时前
Playwright 网络流量监控与修改指南
python
nightunderblackcat4 小时前
进阶向:Python音频录制与分析系统详解,从原理到实践
开发语言·python·音视频