- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CMM解释器
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符号表结构Symboltypeboolean,若变量是int型,为true;否则为falsenameString,存放变量名isNullboolean,判断变量是否赋值arrayLengthint,若该变量为数组,则存放数组长度,否则为-1heightint,记录变量的层次SymbolTabletableListSymbol,存储已经声明的Symbol。语义分析测试用例词法分析语法分析中间代码生成,解释执行1解释执行的符号表Notation/ArrayNotationnameString,存放变量名levelint,记录变量层次typeboolean,true变量为int型,false为real型valueString/String[],存放变量值中间代码生成,解释执行LegendvarsListNotation,存放一般变量arraysListArrayNotation,存放数组变量clearLevel()清楚level层的所有变量setValue()给level层名为name的变量赋值getValue()获取level层名为name的变量操作项操作数1操作数2操作结果if(){}else{}JUMP_AT_BEGINIFbeginELSEendBoolVar1LABLEIFbeginnullnullJUMP_AT_ENDELSEbeginELSEendBoolVar1LABLEELSEbeginnullnullLABLEELSEendnullnullwhile(){}JUMP_AT_BEGINWHILEbeginWHILEendBoolVar1LABLEWHILEbeginnullnullJUMP_AT_ENDWHILEbeginWHILEendBoolVar1LABLEWHILEendnullnull四元式的结构2操作项操作数1操作数2操作结果a1+a2ADDa1a2@1a1-a2MINUSa1a2@1a1*a2MULa1a2@1a1/a2DIVa1a2@1a1a2LESSa1a2BoolVar1a1==a2EQUALa1a2BoolVar1a1a2UNEQUALa1a2BoolVar1a1=a2ASSIGNa2a1null1CONST_INT1nullatTable1.2CONST_REAL1.2nullatTableint a1;NEWa1nullatTableread(a1)READa1nullnullwrite(a1)WRITEa1nullnull语义分析中间代码生成,解释执行词法分析语法分析测试用
文档评论(0)