''

Orien Daily

  1. Lua 的表达式解析器为什么不用 LR?编译原理课上教的 LR 分析器,当然是经典

    Lua 的表达式解析器为什么不用 LR?

    编译原理课上教的 LR 分析器,当然是经典。但打开 Lua 的源码,你会看到 lparser.c 里处理表达式的是一套完全不同的打法——Pratt Parsing,也叫自顶向下算符优先解析。

    思路很直白:给每个 token 绑定两个优先级,一个「左绑定力」(left binding power),一个优先级比它高时才继续往下吃「右绑定力」(right binding power)。解析器从左到右扫描 token,遇到操作符时,比较当前操作符的左绑定力和栈顶操作符的右绑定力——左边强就先归约,右边强就先递归。二元运算、一元运算、函数调用、下标访问,全都能塞进同一套框架,不需要额外的规则表或状态机。

    Lua 的实现尤其精简。subexpr 函数收一个 limit 参数,表示"当前能接受的最低优先级",递归时把操作符的右绑定力作为新的 limit 传下去。binop 和 unop 的处理逻辑加在一起不到 80 行,整个表达式解析就搞定了。没有冲突、没有归约/移进的抉择,更没有用生成器吐出几千行 C 代码。

    为什么 Pratt Parser 在实践里这么受欢迎?V8 的 parser、Rust 的 parser、甚至 GCC 后来也逐步转向手写递归下降。原因之一是错误信息——手写递归下降可以精确控制在报错位置给出有意义的提示,而 LR 生成器的报错出了名的难读。原因之二是扩展性——加一个新运算符?插入一行 case 就行,不用重新生成再排查 shift/reduce conflict。

    但它也有代价。E → E + E | ida < b < c。而且这类手写 parser 的正确性没法像 LR 那样由形式化工具自动验证,全靠人肉 review 和测试。

    下次再看到编译课上那张 LR 状态转换表的时候,可以顺手翻一下 lparser.c,看看真实世界的 parser 是怎么写的。

  2. 📸 @EnQaiaなんか痛い?と思ったら左手の平にあざ出来てる‼️なんで?甲は痛くないし何ともないのに手のひらが青あざで腫れてる…左手離した記憶もないぞ?こんなの初めて💦なったことある人います? #剣道 #試合 #打撲 #稽古原文 #剣道

    📸 @EnQaia
    なんか痛い?と思ったら左手の平にあざ出来てる‼️なんで?甲は痛くないし何ともないのに手のひらが青あざで腫れてる…左手離した記憶もないぞ?こんなの初めて💦
    なったことある人います? #剣道 #試合 #打撲 #稽古
    原文 #剣道

  3. 📸 @HwangYeji_CN ×3𝐘𝐞𝐣𝐢 𝐀𝐢𝐫 𝐋𝐚𝐛| 𝙿𝙰𝚁𝚃 𝟷𝟸 Cyberpunk City Chongqing 2077Time: May 23 - May 26Location: Chongqing 2077, Jiefangbei Pedestrian Street, Tunnel LED Screens, Overpass LED Screens #YEJI #예지 #옞덩봤덩原文 #黄礼志

    📸 @HwangYeji_CN ×3
    𝐘𝐞𝐣𝐢 𝐀𝐢𝐫 𝐋𝐚𝐛| 𝙿𝙰𝚁𝚃 𝟷𝟸

    Cyberpunk City Chongqing 2077

    Time: May 23 - May 26
    Location: Chongqing 2077, Jiefangbei Pedestrian Street, Tunnel LED Screens, Overpass LED Screens #YEJI #예지 #옞덩봤덩
    原文 #黄礼志

  4. 🎵 First Light - Remastered 2004 — Harold Budd专辑:Ambient 2: The Plateaux Of Mirror (Remastered 2004) · 7:06吉村弘的东西就是这样,听上去什么都没发生,但五分钟过去你已经换了一个房间

    🎵 First Light - Remastered 2004 — Harold Budd
    专辑:Ambient 2: The Plateaux Of Mirror (Remastered 2004) · 7:06

    吉村弘的东西就是这样,听上去什么都没发生,但五分钟过去你已经换了一个房间。Something blue,蓝得很安静。

    🔗 Spotify · #推歌 #氛围音乐

  5. 📸 @ITZYBRAZILYEJI ultrapassou a marca de 50 milhões de reproduções como artista solo no Spotify.Ela também ultrapassou a marca de 60 milhões de reproduções em todos os seus trabalhos. @ITZYofficialYEJI 作为 Spotify 上的独唱歌手突破了 5000 万次流媒体大关

    📸 @ITZYBRAZIL
    YEJI ultrapassou a marca de 50 milhões de reproduções como artista solo no Spotify.

    Ela também ultrapassou a marca de 60 milhões de reproduções em todos os seus trabalhos.

    @ITZYofficial

    YEJI 作为 Spotify 上的独唱歌手突破了 5000 万次流媒体大关。

    她所有作品的复制量也突破了 6000 万次。

    @ITZY官方 #ITZY #YEJI
    原文 #黄礼志

  6. 📸 @ITZYBRAZILYEJI disse via bubble que irá manter o pink hair até o final das promoções de Motto, e ela disse que talvez não tente ter cabelo rosa novamente 🥲 @ITZYofficialYEJI 通过气泡表示,她将保留粉红色头发直到 Motto 促销结束,并且她说她可能不会再尝试拥有粉红色头发🥲 @ITZY官方 #ITZY #YEJI原文 #黄礼志

    📸 @ITZYBRAZIL
    YEJI disse via bubble que irá manter o pink hair até o final das promoções de Motto, e ela disse que talvez não tente ter cabelo rosa novamente 🥲

    @ITZYofficial

    YEJI 通过气泡表示,她将保留粉红色头发直到 Motto 促销结束,并且她说她可能不会再尝试拥有粉红色头发🥲

    @ITZY官方 #ITZY #YEJI
    原文 #黄礼志

  7. 📸 黄礼志 (X)[260523] 10:28PM KST🗳️ “a big concern”Yeji asked the fans whether she should keep her pink hair until the end of promotions or dye it brown by Wednesday, saying she couldn’t keep the pink for much longer… Pink won so she’ll stay with it throughout Motto 🫂原文 #黄礼志

    📸 黄礼志 (X)
    [260523] 10:28PM KST

    🗳️ “a big concern”

    Yeji asked the fans whether she should keep her pink hair until the end of promotions or dye it brown by Wednesday, saying she couldn’t keep the pink for much longer… Pink won so she’ll stay with it throughout Motto 🫂
    原文 #黄礼志

  8. 🌅 Orien Daily 朝刊【5.24】1️⃣ 微软取消Claude Code授权 — AI工具链生变2️⃣ 星舰V3首飞基本成功 — 仍在迭代中3️⃣ 得州女子质疑水质被捕 — 言论自由引争议4️⃣ 岡本多緒戛纳最佳女演员 — 日本人首次获此奖5️⃣ 笔记本寄往乌干达难民营 — HN当日最热帖6️⃣ Nvidia扩散语言模型 — 追求光速文本生成7️⃣ Google I/O百余更新 — 含Gemini Spark等8️⃣ 中国煤矿爆炸82死 — 当局已拘责任人频道:@OrienDaily

    🌅 Orien Daily 朝刊【5.24】

    1️⃣ 微软取消Claude Code授权 — AI工具链生变
    2️⃣ 星舰V3首飞基本成功 — 仍在迭代中
    3️⃣ 得州女子质疑水质被捕 — 言论自由引争议
    4️⃣ 岡本多緒戛纳最佳女演员 — 日本人首次获此奖
    5️⃣ 笔记本寄往乌干达难民营 — HN当日最热帖
    6️⃣ Nvidia扩散语言模型 — 追求光速文本生成
    7️⃣ Google I/O百余更新 — 含Gemini Spark等
    8️⃣ 中国煤矿爆炸82死 — 当局已拘责任人

    频道:@OrienDaily