软件设计师-程序语言
2023-10-27 00:06:39 0 举报
AI智能生成
软考程序语言部分
作者其他创作
大纲/内容
类型
解释型
不产生目标程序
效率低
灵活性好
可移植性高
程序运行时需要解释器边解释边执行
编译型
生成目标程序
效率高
灵活性差
可移植性差
运行时完全不需要编译
编译程序的过程
词法分析
输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词,删掉无用的信息,报告分析时的错误
词法分析时编译或解释用户源程序过程是唯一与源程序打交道的阶段,其主要功能是按顺序分析出源程序的记号
语法分析
语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。
通过语法分析确定整个输入串是否构成一个语法上正确的程序
通过语法分析确定整个输入串是否构成一个语法上正确的程序
语义分析
主要检查源程序是否存在语义上的错误,并收集类型信息供后面的代码生成阶段使用。
语义分析分为静态分析和动态分析两个部分。
语义分析分为静态分析和动态分析两个部分。
静态语义分析使用语法指导翻译
中间代码
不依赖计算机,有四种表现形式
后缀式,(逆波兰式)
树型表示
三元式(三地址码)
四元式 (四地址码)
出错处理
语义错误分为两类:静态语义错误可以通过编译程序检测发现;动态语义错误需要程序运行时才能被发现
静态错误
编译时出现语法错误,静态语义错误(运算符与运算对象类型不合法)
动态错误
程序运行时出现 (变量取0做除数,数组下标越界等)
编译正确的程序可以消除词法即语法错误,但不能完全消除语义错误;
文法
文法 G 定义为一个四元组(VN,VT,P,S)
VN: 非终结符集合 ;指在文法中可以代替其他符号的符号集合
VT: 终结符集合 :指在文法中不能再分解成其他符号的符号集合
P: 产生式集: 是指在文法中定义的语言规则集合
S:识别符或开始符号,:在文法中作为句子开头的符号,也是一个非终结符,至少要在一条产生式的左边出现
文法类型
0型文法
短语文法,图灵机,递归枚举
1型文法
上下文有关文法
2型文法
上下文无关文法 (语法规则)
3型文法
正规式 (词法分析)
ab
字符串ab构成的集合
a|b
字符串a,b构成的集合
a*
由0个或多个a构成的字符串集合
(a|b)*
所有字符a或b构成的串的集合
a(a|b)*
以a为首字符的a,b字符串的集合
(a|b)*abb
以abb结尾的a,b字符串的集合
自助机
有限自动机
确定的有限自动机 DFA
该状态机在任何一个状态,基于输入的字符都能做成一个确定的状态转换
不确定的有限自动机 NFA
该状态机在任何一个状态,基于输入的字符都不能做成一个确定的状态转换;
1,对于一个输入,它有两种状态可以转换;2,存在空的情况,既没有任何字符输入的情况下,
NFA可以从一个状态迁移到另一个状态;
1,对于一个输入,它有两种状态可以转换;2,存在空的情况,既没有任何字符输入的情况下,
NFA可以从一个状态迁移到另一个状态;
0 条评论
下一页