news 2026/6/3 9:26:02

上下文无关文法(CFG)—软考文法题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
上下文无关文法(CFG)—软考文法题

你有没有想过,咱们写的代码(比如a+b-c),为啥计算机能看懂?其实背后是一套 “规则说明书” 在起作用 —— 这就是上下文无关文法(CFG),而 “推导” 就是计算机按照说明书把 “抽象符号” 变成 “具体代码” 的过程。

一、“推导” 就是 “按规则变魔术”

先把 CFG 里的符号翻译成生活里的东西:

  • 非终结符(比如 E、T、F,或者你说的 Vₙ):是 “半成品模块”,可以继续拆分、变形;
  • 终结符(比如 a、b、+、-,或者你说的 Vₜ):是 “成品零件”,不能再拆分;
  • →(可推导):就是 “变魔术的规则”—— 左边的半成品,能按规则变成右边的组合。

举个例子:规则写 “E→E-T”,意思就是 “半成品 E,能变成‘E + 一个半成品 T’”,就像 “蛋糕→蛋糕 + 奶油”—— 蛋糕是半成品,能加上奶油变成新的蛋糕。

二、“推导” 的实际操作:从抽象到具体

咱们用a+-b-c这个表达式,看 “推导” 是怎么把抽象符号变成具体代码的:

  1. 起点:从 “开始符号” 出发所有推导都从 “开始符号”(比如 S 或 P)开始,这里我们从 E(代表 “表达式”)出发。
  2. 第一次变形:拆分 E按规则 “E→E-T”,把 E 拆成 “E + 减号 + T”—— 相当于把 “蛋糕” 变成 “蛋糕 + 一块巧克力”。
  3. 第二次变形:拆分里面的 E把拆分出的 E 再按规则 “E→E+T” 变形,变成 “E + 加号 + T”—— 相当于把 “蛋糕” 再拆成 “蛋糕 + 一勺奶油”。
  4. 把半成品变成成品继续把小的 E、T 按规则换成 “成品零件”:
    • E 可以换成 T,T 可以换成 F,F 可以换成 a(这是 “F→id” 的规则,id 就是 a、b 这类单字母);
    • T 也能换成 F,F 可以按 “F→-F” 变成 “-b”(负号 + 字母);
    • 最后把所有半成品都换成成品,就得到了 “a + (-b) - c”,也就是咱们看到的a+-b-c
三、为啥要 “推导”?计算机就靠它 “读” 懂代码

计算机看不懂咱们写的a+-b-c,但能看懂 CFG 的规则 —— 推导就是 “翻译” 的过程:把人类写的表达式,按规则拆成计算机能识别的 “符号组合”,确认这个表达式是 “合法” 的。

比如你写a*b+c,计算机就会按规则一步步推导,看能不能从 E 变成这个式子;要是你写a**b(两个乘号连写),按规则推不出来,计算机就会报错 “语法错误”—— 这就是推导的实际作用。

简单说,“推导” 就是计算机拿着规则说明书,把抽象的符号模块,一步步拼成你写的代码的过程,只要能拼出来,这个代码就是合法的

阿雪技术观

让我们积极投身于技术共享的浪潮中,不仅仅是作为受益者,更要成为贡献者。无论是分享自己的代码、撰写技术博客,还是参与开源项目的维护和改进,每一个小小的举动都可能成为推动技术进步的巨大力量

Embrace open source and sharing, witness the miracle of technological progress, and enjoy the happy times of humanity! Let's actively join the wave of technology sharing. Not only as beneficiaries, but also as contributors. Whether sharing our own code, writing technical blogs, or participating in the maintenance and improvement of open source projects, every small action may become a huge force driving technological progrss.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 2:20:56

Paperless-ngx终极指南:5步轻松构建你的无纸化办公系统

Paperless-ngx终极指南:5步轻松构建你的无纸化办公系统 【免费下载链接】paperless-ngx A community-supported supercharged version of paperless: scan, index and archive all your physical documents 项目地址: https://gitcode.com/GitHub_Trending/pa/pap…

作者头像 李华
网站建设 2026/5/29 0:57:40

Windows本地部署避坑指南:用DeepSeek-R1-Distill-Qwen-1.5B搭建AI助手

Windows本地部署避坑指南:用DeepSeek-R1-Distill-Qwen-1.5B搭建AI助手 1. 引言:为什么选择 DeepSeek-R1-Distill-Qwen-1.5B? 在边缘计算和本地化AI应用日益普及的今天,如何在资源受限的设备上运行高性能大模型成为开发者关注的核…

作者头像 李华
网站建设 2026/5/30 22:57:19

DataHub终极部署指南:3步搞定企业级数据治理平台

DataHub终极部署指南:3步搞定企业级数据治理平台 【免费下载链接】datahub 项目地址: https://gitcode.com/gh_mirrors/datahub/datahub 还在为复杂的数据治理工具部署而烦恼吗?DataHub作为LinkedIn开源的现代数据治理平台,提供了统一…

作者头像 李华
网站建设 2026/5/31 9:50:43

游戏美术资源获取终极方案:开源项目完整实践指南

游戏美术资源获取终极方案:开源项目完整实践指南 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 在游戏开发与数字艺术创作领域,高质量的游戏美术资源获取一直是…

作者头像 李华
网站建设 2026/5/26 15:51:56

MediaPipe Hands彩虹骨骼版:手部追踪代码实例详解

MediaPipe Hands彩虹骨骼版:手部追踪代码实例详解 1. 引言:AI手势识别与交互的现实落地 随着人机交互技术的不断演进,手势识别正逐步从科幻场景走向日常应用。无论是智能驾驶中的非接触控制、AR/VR中的自然交互,还是远程会议中的…

作者头像 李华
网站建设 2026/5/26 14:06:21

Qwen2.5降本实战案例:1GB轻量模型如何实现零GPU高效运行

Qwen2.5降本实战案例:1GB轻量模型如何实现零GPU高效运行 1. 背景与挑战:大模型落地边缘场景的现实困境 随着大语言模型(LLM)在各类应用中广泛渗透,企业对AI能力的需求日益增长。然而,主流大模型通常依赖高…

作者头像 李华