news 2026/5/6 17:52:12

上下文无关文法(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/5/6 16:52:31

PV 操作——软考文法题

PV 操作:从荷兰语源到芯片行业库存管理的深度解析一、 PV 操作的起源与定义:荷兰语的智慧结晶PV 操作是计算机科学中用于进程同步与互斥的经典原语,由荷兰计算机科学家艾兹赫尔・戴克斯特拉 (Edsger W. Dijkstra) 于 1965 年提出。其名称源自…

作者头像 李华
网站建设 2026/5/6 17:52:12

从零生成贝多芬风格乐曲|NotaGen WebUI操作实战

从零生成贝多芬风格乐曲|NotaGen WebUI操作实战 1. 引言:AI音乐生成的新范式 近年来,大语言模型(LLM)技术不仅在自然语言处理领域取得突破,也开始向艺术创作领域延伸。音乐作为人类情感表达的重要载体&am…

作者头像 李华
网站建设 2026/5/6 17:52:01

Fast-Font视觉加速字体:开启高效阅读革命

Fast-Font视觉加速字体:开启高效阅读革命 【免费下载链接】Fast-Font This font provides faster reading through facilitating the reading process by guiding the eyes through text with artificial fixation points. 项目地址: https://gitcode.com/gh_mirr…

作者头像 李华
网站建设 2026/5/3 12:35:07

等离子体模拟新纪元:EPOCH粒子网格代码深度解析

等离子体模拟新纪元:EPOCH粒子网格代码深度解析 【免费下载链接】epoch Particle-in-cell code for plasma physics simulations 项目地址: https://gitcode.com/gh_mirrors/epoc/epoch 在当今科学研究的前沿领域,等离子体物理正经历着前所未有的…

作者头像 李华
网站建设 2026/5/1 4:37:54

Vue3+Element Plus管理模板:从入门到精通的实战指南

Vue3Element Plus管理模板:从入门到精通的实战指南 【免费下载链接】admin-element-vue vue3.x Element ui Admin template (vite/webpack) 项目地址: https://gitcode.com/gh_mirrors/ad/admin-element-vue 还在为后台管理系统开发而头疼吗?每次…

作者头像 李华
网站建设 2026/5/1 10:23:33

STLink驱动下载与STM32CubeProgrammer协同配置指南

手把手教你搞定STLink驱动与STM32CubeProgrammer协同配置:从“设备未识别”到一键烧录 你有没有遇到过这样的场景? 新项目刚编译完固件,信心满满地插上STLink,打开STM32CubeProgrammer,结果弹出一个无情的提示&#…

作者头像 李华