news 2026/4/23 15:44:41

上下文无关文法(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/4/23 12:47:31

Keil调试教程:工业控制系统的手把手入门指南

Keil调试实战:从零开始征服工业控制系统的“隐形bug”你有没有遇到过这种情况?电机控制器莫名其妙地突然加速,温度采集数据时而跳变、时而冻结,串口打印的日志看起来一切正常,但设备就是不按预期工作。你想加个printf看…

作者头像 李华
网站建设 2026/4/23 12:18:29

CosyVoice-300M Lite性能测评:纯CPU环境下的语音合成效果

CosyVoice-300M Lite性能测评:纯CPU环境下的语音合成效果 1. 引言 随着语音合成技术(Text-to-Speech, TTS)在智能客服、有声读物、语音助手等场景的广泛应用,对模型轻量化和部署灵活性的需求日益增长。尤其是在边缘设备或资源受…

作者头像 李华
网站建设 2026/4/23 12:13:43

Memtest86+:专业内存检测工具全方位使用手册

Memtest86:专业内存检测工具全方位使用手册 【免费下载链接】memtest86plus memtest86plus: 一个独立的内存测试工具,用于x86和x86-64架构的计算机,提供比BIOS内存测试更全面的检查。 项目地址: https://gitcode.com/gh_mirrors/me/memtest…

作者头像 李华
网站建设 2026/4/23 12:23:39

Cursor试用重置终极指南:5步快速恢复免费AI编程体验

Cursor试用重置终极指南:5步快速恢复免费AI编程体验 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We ha…

作者头像 李华
网站建设 2026/4/23 12:25:31

如何快速下载B站音频:完整工具使用指南

如何快速下载B站音频:完整工具使用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliDown…

作者头像 李华
网站建设 2026/4/23 12:25:06

如何快速掌握EPOCH:等离子体模拟新手的完整指南

如何快速掌握EPOCH:等离子体模拟新手的完整指南 【免费下载链接】epoch Particle-in-cell code for plasma physics simulations 项目地址: https://gitcode.com/gh_mirrors/epoc/epoch EPOCH是一款强大的开源粒子-in-cell(PIC)代码&a…

作者头像 李华