第二章 高级语言及其语法描述
编译程序的工作过程一般可以划分为五个阶段:词法分析、语法分析、语义分析、中间代码的产生、优化、目标代码的生成。
1.语法三个基本概念:
(1)字母表:有限字符集(类比组成单词的字母、组成词语的汉字)。
(2)单词符号:是语言中具有独立意义的最基本结构(类比单词、词语)。
(3)语法单位:由单词符号构成的更大的结构(类比句子、段落,程序语言中则是表达式、语句等)。
2.语法、语义、文法含义:
(1)语法:一组规则,用这组规则可以产生形式上正确的程序。
(2)语义:语义是指这样的一组规则,使用它可以定义一个程序的意义。
(3)文法:文法是描述语言的语法结构的形式规则(即语法规则)。
以上copy的定义,能看懂但看起来费劲对吧,举个例子,我们定义一种简单的语言,它由4个字符(△○=1-)组成,4个字符合起来就是字母表;然后定义“△”含义为“女”、“○”为“男”、“=”为“看到”、“1△”“1○”分别为“女孩”“男孩”,这些就是一个或多个字符组成的单词符号;如果我说“○=1△”是一个完整的句子,可以表达完整的意思,那么它含义是什么,“男孩看到女”?
不通顺,因为还有语法规则(文法)没加进去——句子由主谓宾组成,“1○”“1△”做谓语时可省略“1”,“男孩看到女孩”应该对了吧,不,正确答案是男孩遇到女孩,“boy meets girl”,这就是的语义,语句的内在含义。
上述文法形式是这样的:
<句子>→<主语><谓语><宾语>
<主语>→<名词>
<谓语>→<动词>
<宾语>→<名词>
<名词>→1○
<名词>→1△
<动词>→=
→表示左由右定义,可以推导:
<句子>→<主语><谓语><宾语>→<名词><动词><名词>→<1○><=><1△>
这一句子无视上下文,其文法即上下文无关文法,归纳起来,一个上下文无关文法G包括四个组成部分:一组终结符号VT,一组非终结符VN,一个开始符号S,以及一组产生式P。
形式上定义一个上下文无关文法G是一个四元式(VT,VN,S,P)。
关于产生式的推导,学完高数的应该没问题。
乔姆斯基把文法分为四种类型:0型,1型,2型,3型。
0型文法:
G=(VT ,VN ,S ,P) 是一个0型文法,如果它的每个产生式是这样的结构 α→β
α∈(VN∪VT)* 且至少有一个非终结符,而β∈(VN∪VT)* 。
0型文法也称短语文法
0型文法的描述能力相当于图灵机
该文法所描述的语言称为0型语言,或者称递归可枚举语言
1型文法:
产生式的形式为α→β
其中|β|>=|α|, S∈ε 除外,但S不得出现于任何产生式的右部
1型文法又称为上下文无关文法
另一种定义形式:α1Aα2→α1βα2
该文法所描述的语言又称上下文有关语言
2型文法:
该文法的产生式满足:A→α
A为非终结符,α为终结符和非终结符组成的符号串,可以是空串
该文法又称为上下文无关文法
该文法所描述的语言又称为上下文无关语言
3型文法:
该文法的产生式满足:
A→αB 或 A→Bα
A为非终结符, α为终结符组成的符号串,可以是空串
该文法又称为右线性文法,或左线性文法,通称正规文法
该文法所描述的语言又称为正规语言(用来描述词法规则)
学习小结:
刚开始学习,语法分析、文法翻译和语义分析都在后面,现在只能说是基本了解语法,尝试推导文法。
第二章 高级语言及其语法描述相关推荐
- 高级语言及其语法描述
高级语言及其语法描述 本章内容概述了高级程序的结构和主要的共同特征,并介绍程序语言的语法描述方法.全部内容分为三个部分,分别为程序语言的定义.高级语言的一般特性和程序语言的语法描述. 一.程序语言的定 ...
- 使用java实现面向对象编程第二章_java面向对象编程——第二章 java基础语法
第二章 java基础语法 1.java关键字 abstract boolean break byte case catch char class const continue default do d ...
- JavaSE入门0基础笔记 第二章Java基础语法
JavaSE入门0基础笔记 第二章Java基础语法 1.运算符 1.1算术运算符 1.1.1运算符和表达式 1.1.2 算术运算符 1.1.3字符的"+"操作 1.1.4 字符串中 ...
- 【python第一章 基础捋顺,第二章 python基础语法】
第一章 基础捋顺,第二章 python基础语法 第一章 基础捋顺 第二章 python基础语法 2.1输入输出 2.2代码注释 2.3代码缩进 2.4命名规范 2.5变量 2.6基本数据类型 2.7数 ...
- 第二章 疯狂Caché 语法规则
文章目录 第二章 Caché 语法规则 区分大小写 标识符 Unicode 空格 注释 例程和方法的int代码中的注释 例程和方法的MAC代码中的注释 方法代码之外的类定义中的注释 文字值 字符串文字 ...
- 尚硅谷Java入门视频教程第二章——Java基本语法
尚硅谷Java入门视频教程第二章 第一章复习 课后习题 Java语言概述 第2章:Java基本语法 2.1 关键字和保留字 2.2 标识符(Identifier) 2.3 变量 2.3.1 变量基本概 ...
- 【编译原理】高级语言及其语法描述
文章目录 高级语宫及其语法描述 (一)程序语言的定义 (二)高级语言的一般特性 1.高级语言的分类 2.数据类型与操作 3.语句与控制结构 (三)程序语言的语法描述 1.几个重要概念 2.上下文无关文 ...
- 02高级语言及其语法描述
文章目录 一.程序语言的定义 1.语法 2.语义 二.高级语言的一般特性 1.高级语言的分类 2.程序结构 2.1 FORTRAN 2.2 Pascal 2.3 Ada 2.4 JAVA 3.数据类型 ...
- 【C++学习之路】第二章——C++基础语法学习(1)之黑客攻击系统
2 C++基础语法学习(1)之黑客攻击系统 遵循原则:从实战中学习知识 法律声明:本系统仅能攻击自己搭建的网站,作为学习使用,不会触犯法律 time:2020.01.20 author:姜海天 IDE ...
最新文章
- 强化学习的自然环境基准
- Design a high performance cache for multi-threaded environment
- caffe模型文件解析_Caffe ImageData神经网络基本示例无法解析模型文件
- 记一次library cache lock/library cache pin导致的函数编译hang住分析及处理过程
- MyBatis中selectByExample和selectByExampleWithBLOBs区别
- 《Java程序员面试秘笈》—— 1.3 线程信息的获取和设置
- c语言中tail和head的用法,tail 与head用法
- 迷你上标和下标复制大全(含0~9、字母、特殊字符)
- 双目测距原理 matlab,双目测距的基本原理
- 俄勒冈州立大学研发脱口秀机器人,全美巡演数十场获好评
- 复习专栏之---设计模式(java)
- 黑客养成—CTF笔记(一)
- 希冀平台1-5:针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引。 CREATE TABLE `salaries` ( `emp_no`
- android沉浸状态栏和顶部状态栏背景色的设置
- 菜鸡编程自学第一天-C语言
- UBT是如何处理Target.cs和Build.cs的?-Unreal4源码拆解-UnrealBuildTool功能流程解析
- 王道论坛计算机考研机试指南怎么样,王道论坛计算机考研机试指南 二 日期类问题...
- 四旋翼自主飞行器探测跟踪系统(C 题 本科组)--2017 年全国大学生电子设计竞赛试题
- 突发奇想之 Planning Trajectory
- 麓言信息平面设计可以转行UI设计吗?
热门文章
- 苹果svg解析自适应长图
- 高德地图只显示一个省_怎么才能在百度地图腾讯地图高德地图上把一个位置的名称改成自己店铺的名称?...
- 来自北大算法课的Leetcode题解:43. 字符串相乘
- 强流量做强变现,抖音电商独立能如愿吗?
- 百度总裁张亚勤宣布10月退休,李彦宏的人才建设要加紧了...
- 学习过程中部分c语言疑惑问题的代码验证
- 32导联 博睿康_赛题详情(Competition Details)-运动想象无训练数据集
- Linux 系统无法解析主机地址(或未知的名称或服务)
- 利用SpringBoot和Vue实现前后端分离(附源码)
- 篇章级事件抽取任务拾遗