CMM解释器PPT选编.pptx

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

CMM 解释器 尹晓宁 2013302580003 语义分析 孙宸 2013302580013 中间代码生成,解释执行 杨伟 2013302580017 语法树的生成 词法分析 语法分析 语义分析 中间代码生成,解释执行 测试用例 词法分析 1 可以识别的token 保留字 if,else,while,int,real,read,write 运算符 +、-、*、/、、、=、==、 分隔符 ( ),[ ],{ }, ; , // , /* , */ 标识符 由数字、字母和下划线组成的串,但必须以字母开头、且不能以下划线结尾的串 常量 整数和小数 分析过程 2 词法分析 语法分析 语义分析 中间代码生成,解释执行 测试用例 语法分析 文法结构 1 程序 =(分程序)* 分程序 = 声明赋值语句 | if语句 | while 语句 | read语句 | write语句 声明赋值语句 = 赋值分语句 | 类型 声明分语句 声明分语句 = (数组变量 | 变量)(“;” | 赋值分语句) 赋值分语句 = 数组赋值 | 变量赋值 数组赋值 = 数组变量 “=” 结果语句 “;” 变量赋值 = 变量 “=” 结果语句 “;” 结果语句 = 运算表达式 | read语句 运算表达式 = 分表达式(算数运算符 分表达式)* 分表达式 = 因子 | “(” 运算表达式 “)” if语句 = if “(” 布尔表达式 “)” “{”分程序 “}” else “{”分程序 “}” while语句 = while “(” 布尔表达式 “)” “{”分程序 “}” read语句 = read “(” 运算表达式 “)” write语句 = write“(” 运算表达式 “)” 布尔表达式 = 运算表达式 关系运算符 运算表达式 关系运算符 = “ ” | “==” | “” 因子 = int型常量 | real型常量 | 变量 | 数组变量 类型 = int | real 算数运算符 = + | - | * | / 词法分析 语法分析 语义分析 测试用例 中间代码生成,解释执行 语义分析 1 检查类型 每个变量在使用前是否有声明。 赋值语句左右两边类型是否正确。 变量在同一层中是否被声明多次。 read后面的变量是否声明过。 数组下标是否是正整数。 符号表结构 2 Symbol type boolean,若变量是int型,为true;否则为false name String,存放变量名 isNull boolean,判断变量是否赋值 arrayLength int,若该变量为数组,则存放数组长度,否则为-1 height int,记录变量的层次 SymbolTable table ListSymbol,存储已经声明的Symbol。 词法分析 语法分析 语义分析 中间代码生成,解释执行 测试用例 中间代码生成,解释执行 1 解释执行的符号表 Notation/ ArrayNotation name String,存放变量名 level int,记录变量层次 type boolean,true变量为int型,false为real型 value String/String[],存放变量值 Legend vars ListNotation,存放一般变量 arrays ListArrayNotation,存放数组变量 clearLevel() 清楚level层的所有变量 setValue() 给level层名为name的变量赋值 getValue() 获取level层名为name的变量 2 操作项 操作数1 操作数2 操作结果 a1+a2 ADD a1 a2 @1 a1-a2 MINUS a1 a2 @1 a1*a2 MUL a1 a2 @1 a1/a2 DIV a1 a2 @1 a1a2 LESS a1 a2 BoolVar1 a1==a2 EQUAL a1 a2 BoolVar1 a1a2 UNEQUAL a1 a2 BoolVar1 a1=a2 ASSIGN a2 a1 null 1 CONST_INT 1 null atTable 1.2 CONST_REAL 1.2 null atTable int a1; NEW a1 null atTable read(a1) READ a1 null null write(a1) WRITE a1 null null 四元式的结构 操作项 操作数1 操作数2 操作结果 if(){} else{} JUMP_AT_BEGIN IFbegin ELSEend BoolVar1 LABLE IFbegin null null JUMP_AT_END EL

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档