- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]第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)