[课业] 11 | C++ | 语言
文章目录
- 语言的三要素
- 语法(Syntax)
- Bakus-Naur范式
- 范式的表示
- 系统对范式的识别
- EBNF示例(与正则有些类似)
- Avram Noam Chomsky的语言系统
- 如何科学地定义语言
- 语义(Semantics)
- 语用(Pragmatics)
语言的三要素
语言有三要素:语法(Syntax)、语义(Semantics)、语用(Pragmatics)
语法(Syntax)
语法是用规则表示语言的组成方式
C++中,与其他语言相同,用EBNF语法图表示语法
Bakus-Naur范式
范式的表示
- 形式化描述程序设计语言的语法(从自然语言梳理出来)
如:
thank sb. for sth.
这是一个pattern,其中sb.和sth.是非语言的一部分,这是为了描述pattern引入的;thank与for是语言的一部分(切实的就是本人)
这种对pattern的描述就实现了用简单形式代表一个集合
这种pattern在程序设计语言中就是EBNF
例:
ID ::- _A_D
A ::- a|b
D ::- 1|0
这就是一个规则,约束了ID;所有能形成的ID是这样几个:_a_1, _a_0, _b_0, _b_1
规则中:ID是目标的标识符(类似变量名);符号“::-”表示“定义为”,意为“规则的表示方法” - 此例中,用这三条规则代表的是一个有限的字符串集合;若要表示一个无限集合(即用有限的规则表示无限集合)用递归定义
如:
ID ::- _A_D
A ::- aA|bA|A
D ::- 0|1 - 依旧此例
ID,A,D等不会出现在集合里,他们只是为了描述该语言来描述的引入,成为非终极符号,表示时通常用<>括起来,如
<ID> ::- _<A>_<D> - 终极符号又称字母表;组词、组句的规则就是语法规则
- 完整形式
非终极符号用{VN}表示
终极符号用{VT}表示
整个集合{VN} U {VT}为BNF对应的语言表示
系统对范式的识别
采用方法:规则替换
即遇到任何一个符号串,机器就根据给出的规则不断用右部替换左部,最终形成一棵树;如果该树的根即为目标Identifier,即认为该字符串为符合规则的串
如果是从下往上处理,称为reduce
如果是从上往下递归处理,称作deduct
例:_a_0是否为上述语言的一部分?
如上图,可知_a_0是上述语言的一部分
EBNF示例(与正则有些类似)
Avram Noam Chomsky的语言系统
- 观点:自然语言可以用严格形式表示,语法结构可以推演
- 55年论文:将人类所有的自然语言分成4个部分
G = { VN, VT, P, Z }
VN代表非终极符号集
VT代表字母表(在程序设计语言中基本同于ASCII)
P代表转换式规则
Z代表目标,即Identifier - 语法表示可以分为4类
详细资料参见1,或参见2
RG(Regular Grammar):正则文法
CFG(Context Free Grammar):上下文无关文法
CSG(Context Sensitive Grammar):上下文有关文法
PSG(Phrase Structure Grammar):短语结构文法 - 对于每种语法,都定义了一种自动识别模型
RG-FA(Finite Automata)(有限状态自动机)
CFG-PDA(PushDown Automata)
CSG-LBA(Linear Bounded Automata)
PSG-TM(Turing machine)
注:这些的意思是:“RG语法用FA来识别”
PushDown Automata识别时用栈结构,有缓冲过程,对应模型叫Stack-Based - 程序设计语言在此语言系统
程序设计语言语法在是RG,整体文法是CFG,还有一些越过CFG进入CSG
按照(RG, CFG, CSG, PSG)的顺序,语言的规则约束越来越弱,内涵越来越少,外延越来越大,语言范畴越来越大 - 不能用CFG描述的部分,如先定义后使用原则,调用函数参数与定义时参数一致原则等
这样的语法部分超过了CFG的范围,但不一定用LBA来识别,而使用ad hoc来识别
注:ad hoc是拉丁的"for this",引用为“for this purpose only",意为(在此情景中)特殊情况出现时,不一定要更强大的自动机来识别(因为自动机越强,系统复杂度越高),而是特殊情况特地解决就好
如何科学地定义语言
- 语言是在一个特定的字母表上,按照一定的规则所组成的符号串集合
- 语言的大小、强弱与语法紧密相关(语法分级参照Chomsky的系统)
- 机制拓展:如通讯协议的表示也可以看作语言(收、发遵循的符号(字母表)排列顺序),组成方式(语法)……
语义(Semantics)
- 语义分为动态语义(Dynamic Semantics)与静态语义(Static Semantics),说明了一段话代表的含义是什么
- 如上例,程序设计语言中,一些全局的文法已经超过了CFG范围,如先定义后使用原则;这些被归结到静态语义里去
动态语义:程序执行行为(如计算子) - 计算机中的动、静:程序在运行之前能做的事都是静态,程序编译时、程序未形成前能确定的形式都称为静态
- 语义也有严格的表示,可分为三类:操作语义、指称语义、公理语义
语用(Pragmatics)
- 定义:语言设计中用什么样的方式表示更为容易被接受,某机制的原理与设计思路等问题
___Fin___
[课业] 11 | C++ | 语言相关推荐
- 什么问题最让程序员头秃?我们分析了11种语言的11000个问题
导读:自 2008 年成立以来,Stack Overflow 一直在拯救所有类型的开发人员.自那时以来,开发人员提出了数百万个关于开发领域的问题. 但是,迫使开发者转向 Stack Overflow ...
- 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第11章 语言数据管理
第11章 语言数据管理 11.1 语料库结构:一个案例研究 主要设计特点 基本数据类型 11.2 语料库生命周期 语料库创建的三种方案 质量控制 维护与演变 11.3 数据采集 从网上获取数据 从字处 ...
- 《用Python进行自然语言处理》第 11 章 语言数据管理
1. 我们如何设计一种新的语言资源,并确保它的覆盖面.平衡以及支持广泛用途的文 档? 2. 现有数据对某些分析工具格式不兼容,我们如何才能将其转换成合适的格式? 3. 有什么好的方法来记录我们已经创建 ...
- c语言性别体重身高的程序,1-1 C语言手撕高斯-朴素贝叶斯 - 通过身高和体重推测性别(机器学习)...
目录 目录 目录 项目介绍 项目1-1的准确度 项目可行性:原理简介 高斯分布(正态分布) 朴素贝叶斯 代码流程 获取数据(数据清洗) 代码实现 头文件 allHead.h 源文件 handleDat ...
- IE 11 请求语言zh-Hans-CN所引发的问题及解决方案
转自:https://blog.csdn.net/xiaoyw71/article/details/51859342 写在前面 首先感谢问题最终解决人:田志辉(音泰思公司[日本]).白军(北京音泰思) ...
- 11.Go语言干货-结构体
1. 类型别名与自定义类型 1.1 自定义类型 在Go语言中有一些基本的数据类型,整型.string.浮点型.布尔等数据类型. 在Go语言中可以根据自身的需求,使用关键字type自定义数据类型. 自定 ...
- 1.11——Go语言适合做什么
一.我们为什么选择Go语言 选择Go语言的原因可能会有很多,关于Go语言的特性.优势等,我们在之前的文档中也已经介绍了很多了.但是最主要的原因,应该是基于以下两方面的考虑: 执行性能 缩短API的响应 ...
- 11——go语言数字类型
Go语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码. Go也有基于架构的类型,例如:int.uint和uintptr. 这些类型的长度都是根据运行程序所在的操作系统类型所决定的: i ...
- 11. Python语言的核心编程 · 第十一章 Python语言的面向对象(上)
Pythin语言的面向对象(上) 1. 面向对象简介 2. 类(class) 3. 对象的创建流程 4. 类的定义 5. 类中的属性和方法 6. 参数self 总结小便条 1. 面向对象简介 Py ...
最新文章
- java手机界面太小_手机端页面在项目中遇到的一些问题及解决办法
- 分布的matlab实现_图像相似度---灰度分布算法---用matlab实现
- jQuery 表单选择器
- PAT1132: Cut Integer
- unity双击打不开脚本_游戏对象和脚本 (创建一个时钟)
- 随便讲讲自己了解的ajax在JQ中的应用
- MATLAB代码:计及碳排放交易及多种需求响应的微网/虚拟电厂日前优化调度
- python用cartopy包画地图_利用Cartopy绘制带有地图投影的图形
- vb.net 画多个矩形_电气原理图和接线图识图方法,电气接线图怎么画?你会画吗?...
- Jiagu 自然语言处理工具
- 《史蒂夫·乔布斯传》——童年篇有感
- Linux 虚拟内存
- php垃圾回收,PHP垃圾回收机制的理解
- python抓取京东商品评价总数_python爬虫抓取和分析京东商城评价
- 腾讯两大社交巨头败了, 瓦次普才是社交APP的真霸主, 用户比微信多5亿
- CVE-2020-1472 Netlogon特权提升漏洞分析及复现
- 图机器学习-图神经网络
- c v语言 小数后20位,V语言学习笔记-30集成C代码库
- Android BroadcastReceiver详解
- 网易传媒全新知识短视频内容消费品牌网易新闻“知识公路”正式发布