[理学]第1章 引论.pptVIP

  • 1
  • 0
  • 约3.86千字
  • 约 30页
  • 2018-03-08 发布于浙江
  • 举报
[理学]第1章 引论

课程计划 内容 学时数 引论 2 文法和语言 12 词法分析 10 自顶向下语法分析方法 10 自底向上优先分析 4 LR分析 10 语法制导翻译和中间代码生成 10 符号表 2 目标程序运行时的存储组织 2 代码优化 4 共 66 例: 判断以下表达式是否合法 1 a a+b a*(b+c) a*(b+c)+…… …. 例: 判断以下程序是否有语法错误 #include stdio.h Void main() { int a,b,c; scanf(“%d,%d”,a,b) c=a+b*2; printf(“%d\n”,c); } 例: 判断以下程序是否有语法错误 Const a=2; Var x,y,z; Begin x=1; y=0; if ax then z=x*(y+2); End 第1章 概述 1.1 什么是编译程序 1.2 编译过程和编译程序的结构 1.3 解释程序 1.4 语言处理过程 1.1什么是编译程序(compiler) 一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序. 1.2 编译过程和编译程序的结构 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成 词法分析 lexical analysis 从左至右扫描字符流的源程序、分解构成源程序的字符串,识别出(拼)一个个的单词(符号) 单词符号是语言中具有独立意义的最基本结构。 例如 double f = sqrt(-1); 词法分析 double f = sqrt(-1); TDOUBLE (“double”) TIDENT (“f”) TOP (“=“) TIDENT (“sqrt”) TLPAREN (“(“) TOP (“-”) TINTCONSTANT (“1”) TRPAREN (“)”) TSEP (“;”) 例: 程序文本if x = y then z := 1 else z := 2; 经词法分析,变成一个个单词 if, x, =, y, then, z, :=, 1, else, z, :=, 2, ; 语言的单词符号是由词法规则所确定的。词法规则规定了字母表中哪样的字符串是一个单词符号。 词法分析 position := initial + rate * 60; 单词类型 单词值 标识符1(id1) position 算符(赋值) := 标识符2(id2) initial 算符 (加) + 标识符3(id3) rate 算符(乘) * 整数 60 分号 ; 语法分析 Syntax Analysis 功能:层次分析. 依据源程序的语法规则把源程序的单词序列组成语法短语(表示成语法树) This line is a longer sentence 语法分析 又例: position := initial + rate * 60 ; (Pascal)规则 赋值语句::=标识符“:=”表达式 表达式::=表达式“+”表达式 表达式::=表达式“*”表达式 表达式::=“(”表达式“)” 表达式::=标识符 表达式::=整数 表达式::=实数 id1:=id2+id3*N 语义分析 进一步分析语法结构正确的程序是否符合源程序的上下文约束、运算相容性等规定。 审查静态语义 使用的变量声明了吗? 允许操作的运算对象吗? 类型正确吗? … 例:PASCAL程序 Program p(); Var rate:real ; procedure initial; … … positio

文档评论(0)

1亿VIP精品文档

相关文档