程序分析技术.docVIP

  • 40
  • 0
  • 约1.21万字
  • 约 30页
  • 2021-03-05 发布于广东
  • 举报
程序分析技术 第一讲:程序语言的发展过程 任务:以程序为对象,分析其属性,如:值的获取与传播,活跃性 应用:程序转换 程序理解 程序演化 程序逆向工程 程序验证与测试 程序优化 重构 自动并行化发展:机器语言:指令:二进制组成 具右基木操作,左移、右移、加1缺点: 可读性差(可理解性差)写程序困难(不方便)问题:程序的维护比较困难扩展纠 错预防适应汇编语言: 符号化了的机器语言功能没有扩充 可读性强 高级程序设计语言: (1) 过程(PASCAL, C, FORTRAN, PL1)特点:命令为基础,程序由一系列语句组成, 语句的执行引起存储单元值的变化。程序的正确型(归纳断言指导,,)数学性质弱(副 作用,变量值变化)数据类型不够丰富 程序的动静态结构差异人 Goto语言的争议(难以理解,难以查错,动静态差异人 修改引起的副作用小,全局优化简单概念简单,效率高) (2) 函数式语言(LISP, ML, HOPE, FP)程序由一组函数组成,通过调舟执行程序。特 点:数学性质好 数据类型可自定义支持并行计算抽象级别高数据以表为基础 (3)逻辑式语言(PROLOG)以谓词为基础,具有推理能力 特定的应用领域抽象的问题求解公武处理专家系统人工智能等(4)对象式语言 SmallTalk80特点:封装性 继承性 多态性 第四代语言:特定领域的特殊类语言高级语言的抽象如:Oracle应用开发坏境、 Power Builder,,程序分析方法:静态分析方法:(词法分析语法分析所需要的分析) 动态分析方法 第二讲:编译原理基础基本概念: ?字母表:Z,元索的非空有穷集合。?符号串:由字母表屮的符号组成的 任何有穷序列。或者如下定义: 1.空符号串E是 上的符号串2.若X是 上的符号串2是 的元素,则xa是 上的符号串 3. y是 上的符号串,当且仅当 它可以由1和2导出 ?符号串的连接:设x和y均是字母 表E上的符号串,它们的连接是把y的所有符号顺序接在x的符号之后所得到的符号 串。 ?符号串的方幕:设x是字母表刀上 的符号串,把x自身连接n次得到的符号串z,称作符号串x的n次幕,记作z=(?形 式),特别地:xO= ?前缀和后缀:设x是字母表上的符 号串,x二yz,则y是x的前缀,z是x的后缀,特别是当zH 时,y是x的真前缀; yH £吋,z是x的真后缀。 ?子字符串:非空字符串x,删去它的 前缀和后缀后所得到的字符串称为X的子字符串,简称子串。如果删去的前缀和后缀不 同时为£,则称该子串为真子串。 ?符号串集合:若集合A中的所有元 素都是某字母表上的符号串,则称A为该字母表上的符号串集合。?符号串集合的乘 积:设A、B是两 个符号串集合,AB表示A与B的乘积,贝【J定义AB={xy | (xeA) A (y^B)} ?符号串集合的方幕:设A是符号串 集合,则称Ai是符号串集合A的方幕,其屮i是非负整数。 A0={ }, Al =A, A2 二AA, ”, An =AA? A ?符号串集合的正闭包:A+=A1UA2 ?符号串集合的星闭包:A*二A0UA1 U A2 U A3 ? 2正则表达武 ?定义:RE为定义在刀上的正则表达 式则 -A, e WRE -若3丘刀,贝iJnWRE -若 el,e2GRE,则 el ? e2, el |e2, el+WRE ?语义函数(解释函数)L L(A) = O, L仁)二{£} -若3丘工则L(a) = {a} -若 el, e2GRE 则 L(el ? e2) = L(el) ? L(e2) L(el e2)= L(el) UL(e2) L(el+)= L+(el) Eg:ab*表示所有以字母a开头的后面跟了 n个(包括)0个b的字符串 a(a|b)*表示所有以红开头的字符串 3自动机定义:一个DFA是一个5元组(S, E, 6,S0,F),其屮S是状态集合,刀是字符 集,S是转换函数(转移函数)SXE-S , SO为初始状态SOWS, F为终止状态集合, FUS。 两种表示形武(转换图转换矩阵)Eg:确定有限状态自动机M二({弘b}, {S, U, Q}, f, S, {Q}),其中 f 定义为:f (S, a)=U f (V, a)=U f (S, b)=V f (V, b)=Q f (U, a)=Q f (Q, a)=Q f (U, b)=V f (Q, b)=Q Sf VQaUQUQbVVQQ 词法分析: 功能:读源程序的字符序列,逐个拼岀单词, 并构造相应的内部表示,同时检杳源程序屮的词法错误。单词:所谓单词是指语言小 具有独立含义的最小的语义单位。 Token:单词的内部表示。“程序语言的操作对彖(只能)是该语言规定的各种数 据。”编译程序是用某种程序语言书写的程序,其操作对象是一般程

文档评论(0)

1亿VIP精品文档

相关文档