程序语言基础知识

程序语言概述

低级语言

机器语言和汇编语言

高级语言

java

低级语言转换成高级语言的方式

汇编、解释、编译

编译程序和解释程序

解释程序:直接解释源程序或先翻译成某种中间代码后再加以执行。逐条翻译并执行

编译程序:①把源程序翻译成目标程序②执行程序

区别:在解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。

比较:编译比解释方式可能取得更高的效率、解释方式比编译方式更灵活、解释方式可移植性较好

程序语言的数据成分

常量和变量

全局变量和局部变量

数据类型

基本类型int short byte long char float double boolean

特殊类型

用户定义类型

构造类型

指针类型

抽象数据类型

程序语言的控制成分

顺序、选择、循环

编译过程

源程序

前端:词法分析、语法分析、语义分析、中间代码生成

后端:代码优化、目标代码生成

运行代码

符号表管理+出错处理

词法分析

任务:对构成源程序的字符串进行扫描的分解,识别出一个个单词。

`

Void jisuan()`
​
`{int   y,c,d;`
​
•   `float x,a,b`;
​
•     `x=a+b*50`;
​
•     `y=c+)d*(x+b;
       }

单词:最小语法单位

  • 基本字:void,int,float

  • 标识符:a,b,c,d,x,y,jisuan

  • 整常数:50

  • 运算符:= + -

  • 界限符:{}开始和结束;;,

转换成统一规格(类号、内码:说明是哪一个标识符)

正规式:单词是不是正规描述

有限自动机:如何比较

进行词法分析

语法分析

在词法分析的基础上,根据语言的语法规则,把单词符号组成各类的语法单位:短句子句过程程序

规则:文法,如何构成

语法规则表示:

-BNF: A::=B|C (::= 定义为)

根据文法的初始要求,推出正确语句。

推导的逆过程就是规约

语法树(分析过程)
中间代码生成
任务

对语法分析识别出的各类语法范畴(短语表达式子句过程),分析其含义(要干什么),进行和初步翻译,产生介于源代码和目标代码的一种代码。

两个阶段
  • 对每种语法范畴进行静态语义检查

  • 若语义正确,就进行中间代码的翻译

中间代码的形式

四元式、三元式、逆波兰式(和正常思维相反)

例x=a+b*50的中间代码表的四元式

中间代码优化
任务

对前面的中间代码进行加工变换,以期待在最后阶段能产生更高效的代码。

原则:等价变换

主要方面:公共子表达式的提取、合并已知量、删除无用语句、循环优化等。

目标代码生成

生成目标机代码 MIPS 汇编码

符号表管理

记录源程序中各种符号的必要信息,辅助语义检查和中间代码生成。

出错处理

不可不免的错误,分为静态和动态。

中缀、前缀与后缀表达式

中缀表达式:通常使用的表达式,如(a+b)×c-d

三种表达式的转换:

(a+b)×c-d中缀转前缀——

第一步:按照运算优先级顺序全部加上括号

第二步:每个括号的运算符移到前面

-(×(+(ab)c)d)

第三步:去掉括号

-×+abcd

(a+b)×c-d中缀转后缀——

第一步:按照运算优先级顺序全部加上括号

第二部:每个括号的运算符移到后面

(((ab)+c)×d)-

第三步:去掉括号

ab+c×d-

传值调用和引用调用

函数调用时的基本的参数传递方式有传值调用和引用调用

传值调用

信息传递是单向的,只能将实参的值传递给形参,而形参不能再将值传递给实参

引用调用

信息传递是双向的,被调函数中对形参的访问和修改实际上就是对实参的访问和修改。

posted @   Fancy[love]  阅读(400)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示