第二章 程序设计语言基础

程序语言概述

1,低级语言:机器语言与汇编语言

2,高级语言:贴近人的自然语言,抽象程度大大提高,需要编译成特定机器上的目标代码

3,编译程序和解释程序:用高级语言或汇编语言编写的代码称为源程序,源程序不能直接在计算机上执行。汇编语言需要汇编语言的翻译程序,高级语言需要相应的编译程序或者解释程序进行翻译。

4,程序设计语言的定义:

·语法:由程序设计语言的基本符号组成程序中的各个语法成分(包括程序)的一组规则,其中由基本字符构成的词法书写规则称为词法规则,由符号(单词)构成语法成分的规则称为语法规则。

·语义:程序语言中按语法规则构成的各个语法成分的含义,可分为静态语义和动态语义

·语用:表示构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响。

·语境:理解和实现程序设计语言的环境,包括编译环境和运行环境。

5,程序设计语言的分类:

·命令式程序设计语言:基于动作的语言,计算被看作时动作的序列,有Fortran,Pascal,C语言。

·面向对象的程序设计语言:Simula提出了对象和类的概念,其他的代表有C++,Java,Smalltalk。

·函数式程序设计语言:是一类以λ-演算为基础的语言,该语言的代表是LISP,其中大量使用了递归。

·逻辑型程序设计语言:是一类以形式逻辑为基础的语言。该语言的代表是建立在关系理论和一阶谓词理论基础上的Prolog。

6,程序设计语言的基本成分

a 数据成分

·常量和变量

·全局量和局部量

·数据类型

b 运算成分

·顺序结构

·选择结构

·循环结构

c 函数

·函数定义:函数首部和函数体

·函数声明:先声明后引用

·函数调用:传值调用和引用调用


语言处理程序基础

1,汇编语言基本原理

一个程序可以有三类语句:

· 指令语句:又称为机器指令语句,汇编后能产生相应的机器码,有传送指令,算数运算指令,逻辑运算指令等。

· 伪指令语句:指示汇编程序对源程序进行汇编时完成某些工作,经汇编后不会产生机器代码,伪指令的很多操作是在源程序被汇编时完成的,指令语句必须在程序运行时。

· 宏指令语句:将多次重复使用的程序段定义为宏。每个宏都有对应的宏名。

2,汇编程序

汇编程序的功能是将汇编语言编写的源程序翻译成机器指令程序(类似于编译)。它一般至少需要两次扫描。

第一次扫描会生成一个符号表(ST)用来存放存储源程序中符号的值,其中有一个单元地址计数器(LC)用来计算表示标号的值,同样存储到ST中。另外有一个固定的机器指令表MOT1,其中记录了每条指令的记忆码和长度。

第二次扫描的任务是产生目标程序,除了使用前一次扫描产生的ST,还要使用机器指令表MOT2,这一次,可执行汇编语句被翻译成对应的二进制代码机器指令,有两个方面的工作:一是把机器指令助记符转换成二进制机器指令操作码,这可以通过查找MOT2来实现;二是求出操作数区个操作的值(用二进制表示)。

3,编译程序基本原理

功能是把用高级语言书写的源程序翻译成与之等价的目标程序。

编译过程划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段。实际编译器可能会将其中某些阶段结合在一起进行处理。

· 词法分析阶段:对源程序从前到后(从左到右)逐个字符进行扫描,从中识别出一个个“单词符号”。输出的“单词”通常采用二元组的方式:单词类别和单词自身的值。

· 语法分析阶段:在词法分析的基础上,根据语法规则将单词符号序列分解成各类语法单位

· 语义分析阶段:审查程序是否存在语义错误,并收集类型信息共后面的代码生成阶段使用。语义分析的一个主要工作是进心类型分析和检查。

· 中间代码生成:中间代码是一种结构简单且含义明确的记号系统,这个阶段的工作就是根据语义分析阶段的输出生成中间代码(类似于Java的.class文件)

· 代码优化阶段:对前一段产生的中间代码进行变换或进行改造,目的是使目标代码更为高效,更加节省空间。可以在中间代码生成阶段或者目标代码生成阶段执行。

· 目标代码生成阶段:把中间代码变换成特定机器上的绝对指令代码。是编译的最后阶段。

· 符号表管理:在符号表记录各个符号的动态错误

· 出错处理:错误大致可分为动态错误和静态错误。静态错误是指编译阶段发现的程序错误,可分为语法错误和静态语义错误。动态错误,指程序中的逻辑错误。

4,解释程序的基本原理

解释程序是一种语言处理程序,它直接执行源程序或者中间代码而不产生目标程序,这是它和编译程序的主要区别。


文法和有限自动机

书上看的一头雾水,这里参考别人的总结https://blog.csdn.net/hongtao_6/article/details/81951166

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342