编译分析技术与工具课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译分析技术与工具课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 分析 技术 工具 课件
- 资源描述:
-
1、编译中的分析技术和工具简介大纲 概念 文法 分析 递归下降分析 LL分析 LR分析 YACC Lex 选择 学习资料概念:编译的地位降龙十八掌太公兵法理论、形式化理论、形式化经经验验、积积累累操操作作系系统统编编译译器器概念:编译 编译 Compile 翻译【计】to translate instructions 编纂 collect and put togetherint main()int a,b;a=(int)&b;printf(“%xn”,a);return 0;B8 01 FE FF 0E 4B C6 F8 FEC+Compiler源代码编译器目标代码概念:编译基本过程#define
2、 MAX 256#define TEXT“Hello”int main()int a=MAX char x=TEXTB8 01 FE FF 0E 4B C6 F8 FE预处理优化代码生成分析分析Pre-ProcessParseOptimizeGenerateint main()int a=256 char x=“Hello”有向无环图DAG抽象语法树AST中间代码IntermediateCode源代码Source目标代码Target概念:解释 解释 Interpret Interpret:口译#!/bin/shecho“Begin”cat file|lessmakesed Bash源代码解释器
3、执行动作catmakesedless概念:解释基本过程执行分析分析ParseRun#!/bin/shecho“Begin”cat file|lessmakesed 概念:分析 分析 Parse 序列化到结构化 词法分析、语法分析、语义分析FUNCTION fact(x)IF x=0 THEN RETURN 1 ENDIF s=1 FOR i=1 TO x s=s*i NEXT iEND FUNCTIONPRINT fact(10)PRINT fact(8)文法 文法 Grammar 文法的概念 文法和语言 文法的表示 Chomsky文法分类文法:文法的概念(1)标准句型标准句型:(定语)主语(
4、状语)谓语(补语)(定语)宾语主语主语:名词/代词谓语谓语:动词宾语宾语:名词/代词定语定语:形容词/代词状语状语:副词补语补语:助词名词名词:苹果、人、水、船动词动词:揍、吃、喝、喜欢代词代词:我、它、那个形容词形容词:红、坏、贱副词副词:飞快的、狠狠的、很助词助词:了、吧、吗我 吃 红 苹果我 飞快的 吃 苹果我 狠狠的 揍 了 那个 贱人我 吃 船苹果 吃 了 我我 很 喜欢 坏 苹果文法:文法的概念(2)标准句型标准句型:(定语定语)主语主语(状语状语)谓语谓语(补语补语)(定语定语)宾语宾语主语主语:名词名词/代词代词谓语谓语:动词动词宾语宾语:名词名词/代词代词名词名词:苹果、人、
5、水、船动词动词:揍、吃、喝、喜欢代词代词:我、它、那个我 吃 红 苹果我 飞快的 吃 苹果我 狠狠的 揍 了 那个 贱人开始开始符号符号终结符终结符Terminal非终结符非终结符Non-Terminal产生式产生式Production句子句子推导、推导、表达表达规约、分析规约、分析文法:文法的概念(3)Program:Condition Statement CommentCondition:if ExpressionStatement:print ValueComment:#TextExpression:Expression=ExpressionValue:a|b|c|dText:Hello
6、|Good|Howif a=b print Helloif b=c print Good 开始开始符号符号终结符终结符Terminal非终结符非终结符Non-Terminal产生式产生式Production句子句子推导、表达推导、表达规约、分析规约、分析文法:文法和语言 文法的形式化定义 文法:四元组 (S,VN,VT,P)句子:文法的一个推导 语言 文法中所有句子的集合XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX文法:文法的表示 产生式:句子主语
7、谓语 宾语A AaA BcB bbAB Acd BNF范式(Backus-Naur Form)句子:=主语 谓语 宾语:=a:=bcd 扩展BNF范式(EBNF范式):=a|c *|ab+c|文法:文法的Chomsky分类(1)不同特点的产生式、不同的表达能力 3型文法(正则文法)Regular Grammar 产生式简单:=a:=a 表达能力很弱 a、aa、aaa、aaaa、ac、abc、abbc、abbbc、abbbbc 没有“记忆”能力 等价于确定性有限自动机(DFA)多用于定义单词(token)文法:文法的Chomsky分类(2)3型文法的语言表达能力示例叽叽叽叽叽叽叽叽叽叽叽叽吱吱吱
8、吱吱吱叽叽吱吱文法:文法的Chomsky分类(3)3型文法的语言分析能力示例FUNCTION fact(x)IF x=0 THEN RETURN 1 ENDIF s=1 FOR i=1 TO x s=s*i NEXT iEND FUNCTIONPRINT fact(10)PRINT fact(8)FUNCTIONfact(x)IFPROGRAM:=TOKEN SP*TOKEN:=ALPHA*ALPHA:=a|b|c|zALPHA:=A|B|C|Z文法:文法的Chomsky分类(4)2型文法(上下文无关文法)Context Free Grammar abbr.CFG 产生式左部只有一个非终结符(
9、|=1):=ad:=xyz 表达能力较强 IF a b THEN a=b ELSE b=a static int printk(const char*fmt,);有一定的“记忆”能力 多用于定义简单语法(syntax)文法:文法的Chomsky分类(5)2型文法的语言表达能力示例妈妈,抱抱(我)我要(那个(娃娃)哇哇哇哇呜呜呜呜文法:文法的Chomsky分类(6)2型文法的语言分析能力示例FUNCTION fact(x)IF x=0 THEN RETURN 1 ENDIF s=1 FOR i=1 TO x s=s*i NEXT iEND FUNCTIONPRINT fact(10)PRINT
10、fact(8)PROGRAMxsRETURN1IFPROGRAM:=FUNCTIONFUNCTION:=FUNC ST ENDST:=IF EXPRR END IFEXPR:=EXPR=EXPRFUNCTIONTHEN赋值=0文法:文法的Chomsky分类(7)1型文法(上下文相关文法)Context Sensitive Grammar abbr.CSG 产生式左部长度小于右部长度(|):=ad ac:=xyz m:=xyzu 推导是“收敛”的 表达能力更强 能表达语境的概念 可定义复杂语法和部分语义(semantics)文法:文法的Chomsky分类(8)1型文法的语言表达能力示例今王王与百
11、姓百姓同乐,则王王矣王王欲行王王政,则勿毁之矣梁惠王齐宣王成为老大王者文法:文法的Chomsky分类(9)1型文法的语言分析能力示例int x;int main()int x;x=4;func();return 0;void func()x=4;赋值ESP+x4赋值DS+x4文法:文法的Chomsky分类(10)0型文法(短语文法)产生式没有限制 a:=ad:=x m:=x 表达能力最强 等价于图灵机文法:文法的Chomsky分类(11)乔姆斯基文法分类总结文法类型文法类型用处用处0型文法短语文法图灵机1型文法上下文相关文法部分语义、复杂语法2型文法上下文无关文法语法3型文法正则文法单词、简单
12、匹配表达能力限制规则分析:概念(1)分析 Parse 序列化到结构化 理解 按照指定的文法去理解给定的句子 语义(Semantics)检查 语法(Syntax)分析 词法(Lexical)分析分析:概念(2)完全分析 树结构太复杂int x;int main()int x;x=4;func();return 0;void func()x=4;赋值ESP+x4DS+xmainfunc()返回函数定义=范围调用=赋值4范围0变量定义x程序分析:概念(3)分工 语法分析:主导 词法分析:支撑 语义分析:指导、检查语法树语法树词法词法词法词法词法词法语义检查语义检查分析:词法分析 词法分析 用正则文法
13、去理解“字符序列”,提供“单词序列”int x;int main()int x;x=4;func();return 0;void func()x=4;intintmainmainx=x=分析:语法分析 语法分析 用2型文法去理解“单词序列”int x;int main()int x;x=4;func();return 0;void func()x=4;赋值返回函数定义调用赋值变量定义程序分析:分析方法 词法分析 直接分析 构造确定有限状态机分析 语法分析 递归下降分析法 LL分析法 LR分析法 算符优先分析法 递归下降分析:下降 下降 逐级下降分工 每一级均为函数调用1+2*3+4/5表达式因
14、子+因子1*+因子/2345递归下降分析:递归 递归 语法为递归定义时,调用也递归调用 严格定义的递归接口1+2*(3+4*5)表达式因子1*+因子2表达式因子3+45*递归下降分析 递归下降分析 结构简单、自然 编码容易 语言不复杂时性能极佳 采用递归下降作为前端的著名的C编译器:LCC GCC(3.0)C Compiler OpenWatcom C Compiler LLVM/Clang LL分析法(1)LL:Left-Left 从左向右读入单词 从左向右分析 递归下降分析法即为LL分析法的一种特例 LL(k):提前扫描k个单词 LL(1):提前查看1个单词,最常用的LL分析法1+2+3+
展开阅读全文