上下文无关是指,一句话的含义与其前后的内容没有或者几乎没有关系,只由自己决定,把它剪切到其他任何位置,也还是原有的意思。

例如:

...
a = 0;
...

这是一个赋值语句,无论此语句的前后是什么代码,此语句所代表的操作是确定的。即:

给变量a赋予值0

换句话说,CPU遇到什么语句就执行什么语句,不用管其他的。


编程语言为什么不用人类的语言(自然语言),而是用上下文无关的文法呢?
因为

  1. 便于设计编译器。
    试想一下,如果可以用自然语言写代码,那不就是实现了人工智能了吗?客观上技术目前无法实现。
  2. 便于代码开发维护。
    如果开发出来的代码像高考的语文阅读理解一样,每个人都有不同的理解,那么,到底哪个才是作者真正想要表达的?如果人类都确定不了含义,那计算机同样也确定不了,最终结果就是错误执行或无法执行。
  3. 汇编语言/机器语言是上下文无关的。CPU执行指令时,读到哪条执行哪条。如果CPU需要考虑上下文,来决定一个语句到底要做什么,那么CPU执行一条语句会比现在慢千倍万倍。考虑上下文的事情,完全可以用户在编程的时候用算法实现。既然机器语言是上下文无关的,那高级语言也基本上是上下文无关的,可能有某些个别语法为了方便使用,设计成了上下文相关的,比如脚本语言的弱类型。在便于使用的同时,增加了解析器的复杂度。

综上:编程语言基本上都采用上下文无关的原则设计语法。


附:
上下文无关文法—维基百科

【编译原理】什么是上下文无关文法?相关推荐

  1. 《编译原理》-3.上下文无关文法及分析

    上下文无关文法及分析 3.1 分析过程 3.2 上下文无关文法 3.2.1 与正则表达式的比较 3.2.2 上下文无关文法规则的说明 3.2.3 推导及由文法定义的语言 3.3 分析树与抽象语法树 3 ...

  2. 上下文无关文法的分析树(Context-Free Grammar, CFG)的分析树--编译原理

    上下文无关文法的分析树(Context-Free Grammar, CFG)的分析树 分析树 根节点的符号为文法开始符号S 每个内部节点都是对某个产生式A→β的应用,该节点的标号就是产生式的左部,子节 ...

  3. 【编译原理】构造产生如下语言的上下文无关文法各一个:

    13.构造产生如下语言的上下文无关文法各一个: (1) (an bm c2m | n,m≥0 } S->AB A->ε|aA B->ε|bBcc (2) w c wR| w∈{a,b ...

  4. 编译原理学习(到LL1文法部分)

    今天终于开始着手把一年前学的编译原理整理一下啦!打败拖延症 #*# 机器语言:计算机只认识由0和1构成的机器语言,每台机器自己独特的指令系统即机器语言. 机器语言->汇编语言->高级语言 ...

  5. 句法模式识别(两)-正规文法、上下文无关文法

    正规的语法特点 1.全部长度有限的语言都是正规的. 2.用正规文法当然能产生无限长串,当中周期反复部分的长度不大于非终止符的长度. 举个样例 在此规则之下.能生成句子 当中周期反复部分为ab,这个样例 ...

  6. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 2 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 2 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  7. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 1 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 1 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  8. 【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★

    文章目录 一.下推自动机计算过程 二.上下文无关文法 CFG 转为下推自动机 PDA 流程 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 ...

  9. 上下文无关文法及其分析树

    上下文无关文法是程序设计语言所使用的语法.它的特点是同样的字符串在不同的语境下,意思不变.满足上下文无关文法的语言便于计算机识别和处理.我们已经介绍过,语言是语句的集合,而语句是通过产生式定义的.上下 ...

最新文章

  1. sql server 2005 T-SQL @@TOTAL_READ (Transact-SQL)
  2. 4种最常问的编码算法面试问题,你会吗?
  3. 物理机存放mysql实例原则_MySQL数据库规范 (设计规范+开发规范+操作规范)
  4. 用python tkinter显示Mandelbrot图
  5. 如何应对“中年危机”
  6. c++从入门到进阶--引用与常量
  7. 数据结构与算法--力扣109题将有序双向链表转换为二叉搜索树
  8. 他们调查了3.9万名程序员,制作了这份开发者技能报告
  9. mui栅格布局的两种方式(grid和list,宫格和列表)
  10. duilib学习领悟(2)
  11. dylib java_使用单声道可执行文件捆绑.dylib文件
  12. L1-057 PTA使我精神焕发 (5 分)-PAT 团体程序设计天梯赛 GPLT
  13. tcpdump非常实用的抓包实例
  14. [JLOI2014]松鼠的新家 倍增LCA+树上差分
  15. mongodb在ubuntu下无法打开的问题
  16. PRML Chapter 02 Probability Distributions
  17. 【学习笔记】福州大学网络课程 网络空间安全概论(1,4)
  18. 十大企业级Linux服务器安全防护要点
  19. 鸡兔同笼html语言,鸡兔同笼有哪五种方法
  20. FOP生成PDF中文乱码问题解决

热门文章

  1. 关于android:windowNoTitle不起作用的解决办法
  2. [每日一题] 11gOCP 1z0-052 :2013-09-1 RMAN-- repair failure........................................A20...
  3. Objective-C 的OOP(下)-类(static)方法、实例方法、overwrite(覆写)、属性(property)...
  4. set row count
  5. Hihocoder #1631 : Cats and Fish 模拟
  6. oracle sql-1,Oracle – Oracle SQL(1)
  7. php全局cors,PHP开启CORS - slagga的个人页面 - OSCHINA - 中文开源技术交流社区
  8. redis 登录_Redis集群架构+Dubbo开发框架+SSO单点登录+Nginx+ZooKeeper
  9. arm for asterisk1.8
  10. pjsua帮助手册(中文)