《crafting interpreters》阅读笔记:4.6.2

《crafting interpreters》阅读第 29 天,4.6.2 总结。

一、内容

章:04.Scanning,节:4.6.2 Number literals

内容:词法分析之处理数字。

二、开发总结

1.处理数字

(1)数字的形式

1.123,1.23 等。

2.不支持点开头或者结尾的写法,如:.123, 123.。

3.支持数字调用方法:144.sqrt()。

(2)处理逻辑

遇到数字,则往下遍历:如果是数字,继续;如果是点.则判断点后面的是否是数字,如果是数字则继续,如果不是则结束遍历。

(3)测试用例

复制代码
// 整数
123;

// 浮点数
1.23;

// 数字的方法调用
144.sqrt();

2.源代码点评

复制代码
private boolean isDigit(char c) {
	return c >= '0' && c <= '9';
}

虽然 Java 自带 Chracter.isDigit() 方法,但是作者却不用,个人猜测是因为 Chracter.isDigit() 判断的范围更广,例如上标数字(如:1²3里面的 ²)也被认为数字,自定义的函数更准确。

3.Java vs Python

(1)判断字符是否是数字

Java:

复制代码
Character.isDigit('123'); 

Python:

复制代码
str.isdigit()

4.Python 代码实现

https://github.com/codists/pylox

三、Python 技术总结

1.内置数据类型:str

复制代码
str.isdigit()
str.isnumeric()
str.isdecimal()

因为读取数据的时候获得的是字符串,然后再转为数字,在实际开发中还是用得比较多的。通过此小节可以提示对内置库 str 的掌握程度。

四、其它

4.6.2 Number literals 小节的学习与功能开发花了 3 天,还是太慢了。这个过程中犯了一些错误:因为自己为了不受书中代码影响,习惯先自己写代码,然后再阅读,再将自己的代码和书上的代码对比优化,但是因为自己考虑不全面(即我们实际开发中所说的梳理需求不够完善),往往需要推翻重写。后续改为先梳理需求,然后阅读,完善需求,再开发,在对比代码,最后完善。

五、参考资料

1. 编程

(1) 豆瓣,Robert Nystrom,《Crafting Interpreters》:https://book.douban.com/subject/35548379/

(2)Github,craftinginterpreters: https://github.com/munificent/craftinginterpreters

(3)Github,Python 实现:https://github.com/codists/pylox

2. 英语

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

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

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

相关推荐
2601_9679791217 分钟前
机器学习必修课:经典算法与Python实战
python·算法·机器学习·实战·课程
cpolar技术支持35 分钟前
listen(5) 只排得住 5 个连接:第 6 个客户端卡在 connect 超时,进程活着端口却显示假活不放行
python·socket·tcp·cpolar·故障排查
梯度下降者1 小时前
我校学子斩获 2025 全国高新技术竞赛 Python 赛道全国一等奖
python·教育·竞赛·信息技术·人才培养
小小张说故事2 小时前
Python 的 memoryview 为什么能零拷贝:拆开 buffer protocol、cast 和那道 BufferError
python
Hvitur2 小时前
Java - Lambda
java·开发语言·python
2601_967980113 小时前
win10如何把python加入环境变量
python·win10·安装教程·命令行·环境变量
锋行天下10 小时前
langgraph 后端发自定义数据,前端接收方法概括
人工智能·python
benchmark_cc12 小时前
用 QuantDash 读取单只股票五档盘口:抽样、缺失值检查与复现记录
python·数据分析·pandas·量化交易·股票数据·quantdash
曲径海盗12 小时前
【Python 学习第 55 天】列表基础
python·学习笔记·编程入门