以下内容均由编译原理视角展开


高级程序语言概述


先介绍一些有代表性的程序设计语言

语言 特点
FORTRAN 数值计算
COBOL 事务处理
Pascal 结构化程序设计
Lisp 函数式程序设计
Prolog 逻辑程序设计
C 系统程序设计
Smalltalk 面向对象程序设计
Java Internet应用、可移植性
Python 解释型

更接近数学语言和工程语言
更直观、自然易于理解
编写效率高
易移植


程序语言的定义

  • 语法
  • 语义
  • 语用(了解,编译原理弱相关)

语法

程序本质上是一定字符集上的字符串
语法:一组规则,用它可以形成和产生一个合式(well-formed,一定组织的,符合一定的规格和样式)的程序

  • 词法规则:单词符号的形成规则(即哪些字符序列构成常数,哪些构成基本字,哪些作为算符),由有限自动机描述
  • 语法规则:语法单位的形成规则(即表达式的构成、语句的构成、程序的构成),由上下文无关文法描述
    语法单位:表达式、语句、分程序、过程、函数、程序等

语法规则和词法规则定义了程序的形式结构
定义语法单位的意义属于语义问题


E → i
//表达式(语法单位)E可以由串i(单词、语法单位)构成
//或者说一个变量名、一个标识符单独构成一个表达式
E → E+E
//表达式E可以由两个子表达式通过’+‘字符连接构成
//两个子表达式通过’+‘字符连接起来构成一个更大的表达式
E → E*E
//表达式E可以由两个子表达式通过’*‘字符连接构成
//两个子表达式通过’*'字符连接起来构成一个更大的表达式
注意这里没有把’*‘视为乘号,因为将’*'解释为算术乘法属于语义问题
E → (E)
//表达式E加上括号仍是表达式


语义

一组规则,用它定义一个程序的意义
描述方法

  • 自然语言描述  有歧义,易隐藏错误,不完整性
  • 形式描述  使用形式语义(了解,编译原理弱相关)


程序的这种层次结构使我们可以从对下层单位的理解逐步得到对上层单位的理解

程序语言成分具有逻辑意义(数学意义)和实现意义(计算机的具体实现)
实现意义与逻辑意义不一定完全一致

程序语言的功能:描述数据和对数据的运算


高级语言的一般特性

  • 高级语言的分类
  • 程序结构
  • 数据结构与操作
  • 语句与控制结构

高级语言的分类

强制式语言(Imperative Language)/命令式语言/过程式语言
代表:FORTRAN、C、Pascal
特性:命令驱动,面向语句。描述数据处理的每个步骤

应用式语言(Applicative Language)
代表:Lisp、ML
特性:注重程序所表示的功能,通过描述函数的构造来实现数据处理

基于规则的语言(Rule-based Language)
代表:Prolog
特性:检查一定的条件,满足值时进行适当动作

面向对象语言(Object-Oriented Language)
代表:Smalltalk、C++、Java
特性:封装、继承、多态


程序结构

FORTRAN

FORTRAN程序的主程序调用其他辅程序完成数据处理,模块不允许嵌套,如不允许递归、子程序中不允许定义函数。FORTRAN有明显的模块化程序设计的特点

Pascal
Pascal是模块化程序设计语言的代表
Pascal程序本身可以看成是一个操作系统调用的过程,过程可以嵌套和递归

Pascal中名字的作用域遵循最近嵌套原则
C语言类似


Java

  • 类与对象
  • 继承,封装,多态

数据结构与操作

数据类型

初等数字类型(基本数字类型)
(1)数值类型

  • 整型、实型、复数…
  • 运算:+、-、*、/、等
    (2)逻辑类型
  • true、false
  • 布尔运算:与、或、非等
    (3)字符类型:符号处理
    (4)指针类型

标识符与名字

标识符是语法概念,名字是语义概念
标识符概念侧重描述标识符的构成形式,如字符串可以作为标识符,int、a
名字标识程序中的对象,具有语义,指代特定的内容

名字的绑定(binding)是指将标识符与所代表的程序数据或代码进行关联
静态绑定:编译时绑定。如int a;
动态绑定:运行时绑定。如Java中对象调用方法时进行的绑定

数据结构

数组


蓝色表达式值在编译时就可以确定,因此预先计算好
存储在以下内情向量表中

记录(结构)

字符串、表格、栈

抽象数据类型(ADT)

同数据结构中的ADT(数据定义+基本运算)
编程语言对抽象数据类型的支持

  • Ada通过程序包(package)提供对数据封装的支持
  • Java等OOP语言通过类(Class)对ADT提供支持

语句与控制结构

表达式

语句
通常高级程序设计语言具有以下种类的语句

语句的分类

按功能分类

  • 执行语句:描述程序的动作
  • 说明语句:定义各种不同数据类型的变量或运算,定义名字的性质

按形式分类

  • 简单句:不包含其他语句成分的语句
    A = B + C;
    goto re:
  • 复合句:句中有句的语句
    while( i >= 0 ) {
      j = i * 10;
      i++;
    }

2019/1/11

编译前奏:高级程序设计语言概述相关推荐

  1. 编译原理 --- 高级程序设计语言概述

    第一部分 --- 程序设计语言的定义 一个程序设计语言一般有三个定义:1.语法:2.语义:3.语用 在编译原理这门课中我们主要考虑语法和语义这两个定义 1.程序本质上是一定字符集合上的字符串,但是字符 ...

  2. 编译原理学习笔记2——高级程序设计语言概述

    编译原理学习笔记2--高级程序设计语言概述 2.1常用的高级程序设计语言 2.2程序设计语言的定义 2.2.1语法 2.2.1语法 2.2.3程序语言的基本功能和层次机构 2.2.4程序语言成分的逻辑 ...

  3. 程序设计语言编译原理_编译原理学习笔记(二):高级程序设计语言

    高级程序设计语言 一.语言概述 1.1 语法 v.s. 语义 程序本质上是一定字符集上的字符串 语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序 定义了程序的形式结构 定义语 ...

  4. 编译原理:高级程序设计语言的语法描述

    true beginning 高级程序设计语言的语法描述 文法:描述语言的语法结构的形式规则 比如在自然语言中 <句子> → <主语><谓语><直接宾语> ...

  5. 高级程序设计c语言试卷答案,高级程序设计语言半期试卷答案.doc

    高级程序设计语言半期试卷答案 西南交通大学2009-2010学年第1学期半期试卷 课程代码 3243800 课程名称 高级语言程序设计 考试时间 90分钟 题号一二三四五六七八九十总成绩得分 阅卷教师 ...

  6. 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言

    嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...

  7. 软考——程序设计语言概述

    目录 1,低级语言 2,高级语言 3,程序设计语言的定义 4,程序设计语言的分类 5,程序设计泛型 面向对象的程序设计语言有Java,C++,C #,python. 程序设计语言是为了书写计算机程序而 ...

  8. C语言是应用最为广泛的一种高级程序设计语言

    前 言 近年来,C语言是应用最为广泛的一种高级程序设计语言,它不仅是计算机专业学生的必修课,也是许多非计算机专业学生所青睐的技术学科.C语言程序设计是全国和各省计算机等级考试的重要考试内容.C语言功能 ...

  9. 高级程序设计语言的翻译和解释

      解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间代码后再执行:而编译程序(编译器)则是将源程序翻译成目标语言程序,然后在机器上运行目标程序.   这两种语言处理程序的区别 ...

最新文章

  1. 慕课python课后作业_python基础1习题练习
  2. CentOS 6.5安装nagios
  3. FusionCharts Free(3)
  4. vim支持python/dyn,但has返回0
  5. PYTHON如何在内存中生成ZIP文件
  6. ASP.net core 使用UEditor.Core 实现 ueditor 上传功能
  7. jquery的鼠标移入移出事件hover、mouseenter、mouseleave、mouseover、mouseout
  8. 终端服务器安全层在协议流中检测到错误,终端服务器安全层在协议流中检测到错误,并已取消客户端连接...
  9. SpringBoot与Mybatis的集成
  10. Git版本控制:Github的使用之 多人协作及参与项目
  11. Matlab半方差函数/变异函数
  12. python修改html,Python爬虫精简步骤 HTML基础
  13. sql server 2008r2安装注意的问题
  14. win7(win10)更改“文件类型显示图标“的终极修改方法
  15. woed未响应文件没保存,解决办法
  16. Vue node.js实现支付宝支付(沙箱测试)
  17. 代码整洁之道精华——第十四章 逐步改进
  18. 比尔盖茨 1974 年简历曝光
  19. [Win10] HM 软件安装
  20. 专业人士使用的8种流行的Web开发工具

热门文章

  1. 深入学习Gremlin(22):遍历终止terminal
  2. 洋桃开发板笔记(三) 最基本的USART的串口使用
  3. c语言的主函数名是什么,c语言主函数名是什么?_后端开发
  4. cad转换成pdf格式之后如何设置其背景色为白色?
  5. 制作一个amp页面-谷歌移动加速器AMP网页制作方法
  6. 文件操作:fgetc与fputc函数的使用
  7. 六大APP分析技巧,助力皇家彩世界下载节节高
  8. 【Spring AOP(2)篇】原理及两种实现方式(cglibjdk动态代理)
  9. python判断设备是否联网
  10. 复制带有random指针的单链表