2024 11 10 HackerNews

2024-11-10 Hacker News Top Stories #

  1. 线粒体被认为是一种独立的生命形式,具有自己的基因组和表达系统,可以独立地复制和分裂,并与环境进行信息交换和能量转换。
  2. Delta 是一个语法高亮显示的 pager 工具,用于显示 Git、diff、grep 和 blame 输出,提供了多种功能和自定义选项。
  3. 一位科学家用实验室中培养的病毒成功地治疗了自己的乳腺癌,这种方法被称为肿瘤溶解性病毒疗法(Oncolytic Virotherapy,OVT)。
  4. 作者 Michael Lynch 离开谷歌后,自己创业,发现独立创业虽然有风险,但也可以带来更好的工作和生活控制。
  5. Mergiraf 是一个 Git 合并冲突解决工具,可以解决各种 Git 合并冲突,通过了解文件中的树结构来解决冲突。
  6. 美国各州的警察在审讯过程中可以使用欺骗手段,但一些州开始禁止警察在审讯未成年人时使用欺骗手段。
  7. html-to-markdown 是一个强大的 HTML 到 Markdown 转换器,可以将 HTML(甚至整个网站)转换为清晰易读的 Markdown。
  8. 人工智能助手 Claude AI 将与 Palantir 和 Amazon Web Services 合作,处理美国情报和国防机构的秘密数据。
  9. 科学家们最近发现,人体的记忆不仅仅存储在大脑中,其他细胞也具有记忆功能。
  10. IronCalc 是一个开源的电子表格引擎和生态系统,旨在为每个人提供高质量的电子表格解决方案。

Mitochondria Are Alive #

https://www.asimov.press/p/mitochondria

文章《线粒体是活的》讨论了线粒体的本质和功能。作者认为,线粒体不仅仅是细胞中的一个器官,而是一种独立的生命形式。文章指出,线粒体具有自己的基因组和表达系统,可以独立地复制和分裂,并且可以与环境进行信息交换和能量转换。作者认为,线粒体的这些特性使其满足了定义生命的基本条件,因此应该被认为是活的。

文章还讨论了线粒体的起源和演化。作者提到,线粒体可能起源于约 15 亿年前,原始的真核细胞吞噬了一个氧化细菌,随后这两个细胞形成了共生关系。这种共生关系使得线粒体能够为宿主细胞提供能量,而宿主细胞则为线粒体提供营养和保护。

文章最后指出,重新认识线粒体的本质和功能将有助于我们更好地理解生物系统和开发新的生物技术。


HN 热度 604 points | 评论 375 comments | 作者:mailyk | 1 day ago #

https://news.ycombinator.com/item?id=42088758

  • 线粒体的“生命”状态更多是一个语义问题,而非科学新发现
  • 线粒体依赖于细胞核 DNA,无法独立生存,因此不能算作独立的生命体
  • 心脏细胞在移植后仍可存活,但这并不意味着心脏本身是独立的生命体
  • 人类身体中的每个细胞都可以被视为独立的生命体,它们以复杂的方式合作
  • 人类的基因信息不仅存在于受精卵中,还受到母体环境的影响
  • 人的身份不仅仅取决于遗传信息,还涉及环境、教育等因素
  • 胎儿的权利问题不应简单地归结于其是否为“人”,而是涉及潜在性和生命价值
  • 杀死单细胞生物并不等同于杀死复杂生物,因为生命在地球上非常普遍
  • 从道德上定义“人”的标准很重要,否则会陷入宗教或极端观点
  • 自然流产不应被视为过失杀人,除非是由疏忽或不当行为引起的

Delta: A syntax-highlighting pager for Git, diff, grep, and blame output #

https://github.com/dandavison/delta

Delta 项目介绍

Delta 是一个语法高亮显示的 pager 工具,用于显示 Git、diff、grep 和 blame 输出。它提供了多种功能和自定义选项,包括语法高亮显示、单词级别的 diff 高亮显示、侧边显示、行号显示等。

特点

  • 语法高亮显示:使用与 bat 相同的语法高亮显示主题
  • 单词级别的 diff 高亮显示:使用 Levenshtein 编辑距离算法
  • 侧边显示:支持行号显示和语法高亮显示
  • 行号显示:支持显示行号
  • 导航键绑定:支持使用 n 和 N 键在大型 diff 中移动
  • 合并冲突显示:支持显示合并冲突
  • Git blame 显示:支持显示 Git blame 信息
  • 语法高亮显示 grep 输出:支持显示 grep 输出
  • 支持 Git 的 –color-moved 特性
  • 支持复制代码:支持直接从 diff 中复制代码
  • 支持 diff-highlight 和 diff-so-fancy 模式
  • 支持格式化提交哈希为超链接
  • 支持格式化文件路径为超链接
  • 支持自定义样式

安装和使用

请参阅用户手册和 delta –help 命令。

维护者

  • @dandavison
  • @th1000s

HN 热度 556 points | 评论 74 comments | 作者:nateb2022 | 1 day ago #

https://news.ycombinator.com/item?id=42091365

  • Delta 是一个非常实用的工具,可以用于 Git、diff、grep 和 blame 的语法高亮,同时也可以与 ripgrep 配合使用
  • 可以使用 \cat 来防止别名扩展,避免需要查找原始命令路径
  • 语法高亮应该着重于符号而不是语法结构,以帮助更快地区分不同的符号
  • 通过设置 git config --global diff.noprefix true 可以让 Git 的 diff 输出更简洁的文件路径
  • Delta 和 difftastic 都支持 Magit 和 Lazygit,可以在这些工具中使用
  • Delta 有时会截断长行,但可以通过设置 delta.max-line-length 0 来解决
  • difftastic 是一个基于树状语法的 diff 工具,虽然速度稍慢,但非常有用
  • 有些人觉得 Delta 的输出过于复杂,更喜欢简单的 git diff 输出
  • 推荐使用 tig 作为 Git 的界面工具
  • Delta 缺乏 “system” 主题,这阻碍了一些人使用它
  • diffr 是一个更简洁的 diff 工具,适合那些觉得 Delta 和 difftastic 过于复杂的用户

Scientist treated her own cancer with viruses she grew in the lab #

https://www.nature.com/articles/d41586-024-03647-0

一位名叫贝亚塔·哈拉西(Beata Halassy)的科学家,成功地用实验室中培养的病毒治疗了自己的乳腺癌。哈拉西是一位病毒学家,在 2020 年被诊断出患有乳腺癌,这是她左乳房被切除后第三次复发。她决定尝试一种尚未被证明的治疗方法——肿瘤溶解性病毒疗法(Oncolytic Virotherapy,OVT)。

哈拉西选择了两种病毒——麻疹病毒和维斯帕病毒(Vesicular Stomatitis Virus,VSV),这两种病毒都已被用于 OVT 临床试验。经过两种病毒的治疗,哈拉西的肿瘤缩小并且变得更软,最后通过手术成功切除。哈拉西的经历引发了人们对自我实验的讨论和争议。


HN 热度 371 points | 评论 146 comments | 作者:dataminer | 9 hours ago #

https://news.ycombinator.com/item?id=42094573

  • 自我实验在科学史上并不罕见,因此发表此类研究不太可能显著改变伦理标准。
  • 医学伦理有时与普通人理解的伦理不同,更多是为了避免出错时的责任问题。
  • 在某些情况下,企业通过初期低价策略进入市场,待竞争对手退出后再提高价格,这可能加剧社会不平等。
  • 劳动力市场中,工人往往选择最不糟糕的雇主,但这并不意味着选择的雇主是公平支付的。
  • 动态定价机制(如 Uber 的高峰定价)可能会使低收入群体在需求高峰时无法获得服务。
  • 一些司机选择兼职开 Uber,因此对他们来说,这是一笔几乎免费的钱。
  • 企业在进入新市场时可能会烧钱补贴,以驱逐竞争对手,最终成为垄断者并提高价格。
  • 在供需失衡的情况下,司机的收入可能会自动调整,因此长期来看,司机的收入水平会趋于合理。

I quit Google to work for myself (2018) #

https://mtlynch.io/why-i-quit-google/

作者 Michael Lynch 在 Google 工作了四年,最近决定离开 Google,自己创业。

作者回顾了自己在 Google 的经历,特别是自己曾经的 Promotion Packet(晋升包)的经历。作者认为,Google 的晋升机制不够透明,晋升委员会的决定往往基于一些表面上的指标,而不是真正的工作成果。

作者还提到,Google 的文化强调团队合作和社区意识,但这也使得员工容易忘记自己和公司的关系是业务关系,而不是个人关系。

作者决定离开 Google,自己创业,是因为自己想要更好地控制自己的工作和生活。


HN 热度 333 points | 评论 199 comments | 作者:alexzeitler | 1 day ago #

https://news.ycombinator.com/item?id=42090430

  • 作者在离开谷歌后,经历了几年的失败,最终找到了盈利的业务
  • 大多数公司都会失败,但作者在尝试三年后找到了盈利点
  • 2023 年,作者的 Tiny Pilot 业务实现了 22.5 万美元的利润,但在 2021 和 2022 年几乎不盈利
  • 作者的收入低于谷歌 L4 级别的薪酬,这反映了大公司和小企业之间的差距
  • 小企业在美国经济中的份额减少,经济体系更偏向大企业
  • 高收入并不等同于财富,高生活成本会消耗大部分收入
  • 许多高收入者来自富裕家庭,他们对财富的认知存在偏差
  • 高收入者即使在高生活成本地区,也能在短时间内实现财务独立
  • 薪水再高,仍然是受雇于人,缺乏真正的财务自由
  • 美国梦是建立自己的事业,而不是成为高薪员工
  • 大企业垄断市场,使得小企业难以生存和发展
  • 经济体系的改变导致了工作阶级的压抑和不满

Mergiraf: a syntax-aware merge driver for Git #

https://mergiraf.org/

Mergiraf 是一个 Git 合并冲突解决工具,它可以解决各种 Git 合并冲突。它通过了解文件中的树结构来解决冲突,因此可以更好地理解代码的结构和语义。Mergiraf 支持多种编程语言,包括 Java、Rust、Coal、Navy 和 Ayu 等。

Mergiraf 的主要特点包括:

  • 解决 Git 合并冲突:Mergiraf 可以解决 Git 合并冲突,包括合并、还原、变基、挑选等操作。
  • 语法感知合并:Mergiraf 通过了解文件中的树结构来解决冲突,因此可以更好地理解代码的结构和语义。
  • 支持多种语言:Mergiraf 支持多种编程语言,包括 Java、Rust、Coal、Navy 和 Ayu 等。
  • 快速合并:Mergiraf 设计为快速合并,适合交互式使用。
  • 开放性:Mergiraf 可以与其他合并工具一起使用,例如 Git 的默认合并工具。

Mergiraf 的目标是:

  • 不要忽略冲突:Mergiraf 会尽量保留冲突标记,以避免冲突被忽略。
  • 快速合并:Mergiraf 设计为快速合并,适合交互式使用。
  • 开放性:Mergiraf 可以与其他合并工具一起使用,例如 Git 的默认合并工具。

Mergiraf 的使用方法包括:

  • 安装:可以通过安装包或源代码安装 Mergiraf。
  • 配置:可以配置 Git 使用 Mergiraf 作为默认合并工具。
  • 手动使用:可以手动使用 Mergiraf 来解决冲突。

HN 热度 306 points | 评论 68 comments | 作者:p4bl0 | 13 hours ago #

https://news.ycombinator.com/item?id=42093756

  • 语法感知的合并工具在架构上可能会遇到一些问题,例如 tree-sitter 语法主要用于语法高亮,可能无法完全准确地解析代码。
  • GumTree 算法在匹配节点时可能会出现错误,导致匹配结果不佳,尤其是在处理代码装饰器等元素时。
  • 使用 Dijkstra 风格的算法可以提高匹配质量,但计算成本更高。
  • 为了提高解析器的安全性和兼容性,可以将解析器封装成单独的可执行文件,并使用统一的 JSON 模式输出。
  • 对于语法树匹配,内部节点的匹配同样重要,因为代码结构的变化可能意味着匹配的不准确。
  • 在合并过程中支持元素移动可以更好地重放更改,而在差异检测中,这种支持则较难可视化。

https://text.npr.org/nx-s1-4974964

美国各州的警察在审讯过程中可以使用欺骗手段,包括对嫌疑人撒谎和隐瞒证据。然而,近年来,一些州开始禁止警察在审讯未成年人时使用欺骗手段。一些法律倡导者认为,这种做法应该扩展到所有人身上,而不仅仅是未成年人。

在华盛顿州,民主党议员斯托姆·彼得森(Strom Peterson)提出了一个议案,禁止警察在审讯中使用欺骗手段,包括对成年人和未成年人。然而,这个议案遭到了警察协会的反对,他们认为这种做法会影响他们解决案件的能力。

一些法律专家认为,禁止警察在审讯中使用欺骗手段是必要的,因为这种做法可能会导致错误的认罪。根据无罪项目(Innocence Project)的数据,近三分之一的 DNA 证明的错误认罪案件都涉及到警察的欺骗行为。

一些专家认为,警察应该使用其他审讯方法,例如建立信任和询问开放式问题,而不是依赖欺骗手段。这种方法在其他国家已经被广泛采用,例如在英国、法国、德国、澳大利亚和日本等国家,警察通常不被允许在审讯中使用欺骗手段。

总之,禁止警察在审讯中使用欺骗手段是一个有争议的话题,各方都有自己的观点和担忧。


HN 热度 263 points | 评论 241 comments | 作者:everybodyknows | 24 hours ago #

https://news.ycombinator.com/item?id=42091423

  • 警察使用欺骗手段进行审讯的行为应该被禁止,因为可能导致无辜者被冤枉。
  • 印度警察虽然常被诟病腐败,但美国警察的不当行为和几乎不受惩罚的情况更严重。
  • 在印度,警方审讯时获取的供词不能作为法庭证据,因此审讯中欺骗无意义。
  • 警方对 Tom Perez 的行为已经违法,但涉事警员未受相应惩罚,需改革问责机制。
  • 欺骗审讯在某些情况下是合理的,例如有限时间内审讯绑架案的共犯。
  • 欺骗可能导致无辜者承认未发生的罪行,损害法律的公正性。
  • DNA 等新证据的出现有时并不能完全证明被告的清白,但应谨慎对待有瑕疵的证据。
  • 从法律角度,未被证明有罪的人应被视为无罪,无论证据问题大小。

Show HN: HTML-to-Markdown – convert entire websites to Markdown with Golang/CLI #

https://github.com/JohannesKaufmann/html-to-markdown

html-to-markdown 是一个强大的 HTML 到 Markdown 转换器,可以将 HTML(甚至整个网站)转换为清晰易读的 Markdown。它支持复杂的格式化、可定制的选项和插件,以完全控制转换过程。

该工具支持以下特性:

  • 粗体和斜体:支持粗体和斜体,甚至可以在单词内使用。
  • 列表:支持有序和无序列表,具有全嵌套支持。
  • 引用:支持包含其他元素的引用,具有无缝支持嵌套引用。
  • 内联代码和代码块:正确处理反引号和多行代码块,保留代码结构。
  • 链接和图像:正确格式化多行链接,在需要时添加转义空白行。
  • 智能转义:仅在必要时转义特殊字符,以避免意外渲染 Markdown。

此外,该工具还支持以下功能:

  • 移除/保留 HTML:选择性地剥离或保留特定的 HTML 标签,以完全控制输出。
  • 插件:轻松扩展插件,或创建自定义插件以增强功能。

开发者可以使用 Golang 库或 CLI 命令来使用此工具。也可以尝试在线演示或 REST API 来查看其功能。

此外,该工具还提供了以下插件:

  • 基础插件:实现基本共享功能(例如删除节点)
  • Commonmark 插件:实现 Markdown 的 Commonmark 规范
  • GitHub 风格插件:计划中
  • 任务列表项插件:计划中
  • 删除线插件:将 <strike><s><del> 转换为 ~~ 语法
  • 表格插件:计划中
  • Vimeo 嵌入插件:计划中
  • Youtube 嵌入插件:计划中
  • Confluence 代码块插件:计划中
  • Confluence 附件插件:计划中

开发者可以编写自定义逻辑并注册插件。也可以将逻辑打包成插件并发布。


HN 热度 236 points | 评论 43 comments | 作者:JohannesKauf | 14 hours ago #

https://news.ycombinator.com/item?id=42093511

  • 有一个免费的 API 可以实现 HTML 到 Markdown 的转换,但不完美,有些网站无法处理
  • 该 API 并非完全无限制,免费使用有令牌限制,且不能用于商业目的
  • 项目作者提供了一个 REST API,但需要通过 GitHub 注册获取 API 密钥
  • 项目作者曾因未实施速率限制而遭受滥用,导致带宽费用激增
  • 项目作者已将服务迁移到 VPS,并使用 Cloudflare 进行额外控制
  • 项目作者建议结合他库与文章内容识别库使用,以提高转换质量
  • 有人正在开发一个 API,可以基于文本流提取 HTML 页面的主要内容
  • 该项目对于将网页数据输入 LLM 非常有用,因为 LLM 通常能很好地理解 Markdown
  • 有人使用该项目的库将书签内容转换为 Markdown 存储,方便后续导入 Obsidian 等应用
  • 有人建议可以结合嵌入式技术提高书签的搜索质量
  • 有人提到 Elixir 社区也有类似的项目,但功能较为有限

Claude AI to process secret government data through new Palantir deal #

https://arstechnica.com/ai/2024/11/safe-ai-champ-anthropic-teams-up-with-defense-giant-palantir-in-new-deal/

Anthropic 公司宣布与 Palantir 和 Amazon Web Services 合作,将其 Claude AI 模型应用于美国情报和国防机构。Claude 是一种语言模型,类似于 ChatGPT,能够处理和分析数据。然而,这一合作引发了人们对 Anthropic “AI 安全” 立场的质疑。

Anthropic 的 Claude 模型将在 Palantir 的 Impact Level 6 环境中使用,处理机密数据。该公司表示,Claude 将用于三个主要任务:快速处理复杂数据、识别数据模式和趋势,以及简化文档审查和准备。

这一合作是 AI 公司与国防机构合作的最新例子。Meta 和 OpenAI 也在寻求与国防机构合作。Anthropic 的创始人曾表示,他们致力于负责任地开发 AI 技术,但这一合作引发了人们对其 “AI 安全” 立场的质疑。

Anthropic 的 Claude 模型将用于美国情报和国防机构,但公司表示,人类官员将保留决策权。该公司还表示,Claude 模型将用于分析数据、识别模式和趋势,以及简化文档审查和准备。

这一合作引发了人们对 AI 技术在军事领域应用的担忧。一些评论员表示,Anthropic 的这一合作与其 “AI 安全” 立场相矛盾。其他人则表示,AI 技术在军事领域的应用可能会带来风险,例如错误的信息和潜在的伤害。

Anthropic 的创始人曾表示,他们致力于负责任地开发 AI 技术,但这一合作引发了人们对其 “AI 安全” 立场的质疑。该公司表示,Claude 模型将用于分析数据、识别模式和趋势,以及简化文档审查和准备,但人类官员将保留决策权。


HN 热度 224 points | 评论 168 comments | 作者:lawls | 1 day ago #

https://news.ycombinator.com/item?id=42091043

  • Palantir 的特殊之处在于其与美国情报界的关系,最初的投资来自 CIA 的 In-Q-Tel 风险投资公司
  • Palantir 的优势在于被政府信任,能够处理敏感数据而不背叛政府
  • 秘密组织过程可能侵犯民主或宪法权利,缺乏公众监督
  • 许多知名技术的根源在于情报或国防项目,政府资助研究后技术转移至私营部门
  • Palantir 专注于为政府和情报机构提供服务,这种深度合作可能对民主不利
  • Palantir 的商业模式是创建社会经济领域的数字孪生,这解释了其在反恐行动中的成功
  • 秘密技术与政府的关系并不罕见,许多科技公司都有类似背景
  • 早期科技公司如 Google 在政府资助下发展,例如 Google Earth 和 Maps 的起源
  • 私营企业通常追求利润最大化,这限制了它们的创新能力,而政府资助项目则不同
  • 秘密技术与政府合作的阴谋论即使在存在实际阴谋的情况下也往往是错误的
  • In-Q-Tel 对 Facebook 的崛起有一定影响,但这种联系并不直接
  • 科技公司与政府合作的深度可能引发腐败和法西斯主义的担忧
  • 秘密技术公司可能通过降低现有玩家的成本来获得竞争优势

Memories are not only in the brain, human cell study finds #

https://medicalxpress.com/news/2024-11-memories-brain-human-cell.html

科学家们最近发现,人体的记忆不仅仅存储在大脑中,其他细胞也具有记忆功能。这项研究为理解记忆的工作原理和开发新的学习方法提供了新的途径。

研究人员使用两种非脑细胞(神经组织细胞和肾脏细胞)进行实验,模拟学习过程,并观察这些细胞如何响应不同模式的化学信号。结果表明,这些细胞可以识别出重复的化学信号,并将其转化为记忆。

研究人员还发现,当这些细胞接收到间隔重复的化学信号时,它们会更强烈地表达记忆基因,并且这种表达会持续更长时间。这与大脑细胞在学习过程中表现出的“间隔重复效应”相似。

这项研究为理解记忆的工作原理提供了新的视角,并可能为开发新的学习方法和治疗记忆相关疾病提供新的途径。研究人员还指出,这项发现可能会改变我们对身体的看法,例如考虑胰腺如何“记住”过去的饮食模式来维持健康的血糖水平。


HN 热度 186 points | 评论 85 comments | 作者:vivekd | 10 hours ago #

https://news.ycombinator.com/item?id=42094427

  • 《身体从未忘记》是一本情感上难以阅读的书,深入探讨了人们的创伤。
  • 肢体系统在记忆创伤中起着重要作用。
  • 艾雅华斯卡仪式可以帮助处理创伤,但需要与传统疗法结合使用。
  • 面对和承认创伤是治愈的关键,过程虽然艰难但有可能。
  • 创伤治疗不应过于严苛,适当的饮食和生活习惯调整即可。
  • 创伤不仅影响个人,还可能通过遗传方式影响后代。
  • 行为和偏好可能通过表观遗传学传递,但具体机制尚不清楚。
  • 动物的迁徙路线和本能行为可能通过化学信号以外的方式传递。
  • 人类的性吸引力可能与权力动态有关,这些关联可能影响性偏好。

IronCalc – Open-Source Spreadsheet Engine #

https://www.ironcalc.com/

IronCalc 是一个开源的电子表格引擎和生态系统,旨在为每个人提供高质量的电子表格解决方案。它的特点包括功能丰富、Excel 兼容、全面的测试、快速轻量级、国际化支持和良好的设计。

IronCalc 的使命是填补电子表格行业的空白,提供一个强大的开源电子表格引擎,满足不同用户的需求。它致力于解决以下问题:

  • 为 SaaS 开发者提供高质量的电子表格解决方案
  • 实现自动化的电子表格处理
  • 支持全球范围内的协作和分享
  • 允许博客作者嵌入交互式电子表格

IronCalc 不仅仅是一个开源项目,它还致力于推动电子表格技术和社区的发展。它的目标包括:

  • 与大学和学术机构合作进行研究和开发
  • 建立一个社区和协作环境
  • 创建一个知识库,为下一代电子表格开发者提供工具和知识

IronCalc 由 Nicolás Hatcher 和 Daniel González-Albo 设计开发,得到了多个组织的支持,包括 NGI0 Entrust Fund、Tuta 和 Zulip。


HN 热度 168 points | 评论 64 comments | 作者:kaathewise | 7 hours ago #

https://news.ycombinator.com/item?id=42095292

  • 项目作者对项目的展示感到惊喜,并愿意回答大家的问题
  • 有人用 Rust 从头开始写了一个类似的电子表格引擎,对这个项目很感兴趣
  • Rust 编译成 WASM 比 JS 快很多,可能是微软研究团队如果晚几年可能会选择 WASM 而不是 TypeScript
  • 项目使用 MIT 许可证,使用 Plausible 而非 Google Analytics,对非技术用户非常友好
  • 项目作者公开了 IronCalc 的流量分析数据,大部分流量来自 Hacker News 的帖子
  • 项目作者考虑移除所有类型的分析工具,不确定是否应该使用它们
  • IronCalc 可以用于非开发人员构建的电子表格的集成,例如财务部门的电子表格
  • 开发人员可以使用 IronCalc 构建具有特定扩展的电子表格,例如内置 SAT 求解器
  • 目前 IronCalc 没有集成任何现有的引擎或后端,目标是实现 Excel 的大部分功能
  • IronCalc 不是 OnlyOffice 的替代品,但更轻量,加载速度更快,可以处理更大的工作簿
  • 项目作者在解析表达式时使用了递归下降解析器,处理了运算符优先级问题
  • 有人指出递归下降解析器和运算符优先级解析器(Pratt 解析器)之间的区别,IronCalc 使用的是递归下降解析器