实验三语法分析的C语言实现.doc

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

实验三 语法分析的C语言实现 实验目的 二、实验 1、? 2、对语法规则有明确的定义; 3、编写的分析程序能够对实验一的结果进行正确的语法分析; 4、对于遇到的语法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成语法分析过程; 三、实验指导(一)准备 1.阅读课本有关章节,。 2.初步编制程序。 3.准备组测试数据。 ()程序要求 程序输入/输出示例: 输入如下一段C语言源程序:+2*(5.5-5) 输出4.0。 2. 建议:实验一的词法分析结果保存到文件input.c,实验二直接从input.c读取一个token,将用到的文法规则输出并保存到文件output.c。(注:NUM由词法分析器返回) 3.可选功能:可以根据自身的情况完善语法分析程序的错误处理功能,如对遇到的语法错误给出准确的位置和错误类型提示。 三、实验指导(一)准备 1.阅读课本有关章节,明确语言的语法。 2.初步编制程序。 3.准备组测试数据。 ()程序要求 程序输入/输出示例: 输入如下一段C语言源程序(if语句或者while语句,或者都实现):main() { a = 10*(b+2); if (ab) a=b else a=c; while (a!=0) a=3+21*a; } 输出三、实验指导(一)准备 1.阅读课本有关章节,明确语言的语法。 2.初步编制程序。 3.准备组测试数据。 ()程序要求 程序输入/输出示例: 输入如下一段C语言源程序(if语句或者while语句,或者都实现):main() { a = 10*(b+2); if (ab) a=b else a=c; while (a!=0) a=3+21*a; } 输出main() { a = 10*(b+2); } 可参考的文法如下: 0. program ( main() { expression_stmt } 1. expression_stmt ( expression ; | ; 表达式语句有一个可选的且后面跟着分号的表达式。这样的表达式通常求出它们一方的结果。因此,这个语句用于赋值和函数调用。2. expression( var = expression | simple-expression 3. var ( ID | ID [ expression ] 表达式是一个变量引用,后面跟着赋值符号(等号)和一个表达式,或者就是一个简单的表达式。赋值语义:找到由变量var的地址,然后赋值符右边的子表达式进行求值,子表达式的值存储到给定的地址。这个值也作为整个表达式的值返回。var是简单的整型变量或下标数组变量。下标不进行下标越界检查。var ( ID;根据实际情况实现var ( ID [ expression ]数组变量的识别。 4. simple-expression ( additive-expression relop additive-expression | additive-expression 5. relop ( = | | | = | == |!= 6. additive-expression ( additive-expression addop term | term 7. addop ( + | - 8. term ( term mulop factor | factor 9. mulop ( * | / 加法表达式和项表示了算术操作符的结合性和优先级。0. factor ( ( expression ) | var | NUM 因子是围在括号内的表达式;或一个变量,求出其变量的值;或者一个函数调用,求出函数的返回值;或者一个NUM,其值由器。main() { if (ab) a=b else a=c; } 可参考的文法如下: 0. program ( main() { if_stmt } 1. if_stmt( if ( expression ) statement | if ( expression ) statement else statement 条件语句有通常的语义:表达式进行计算非0值引起第一条语句的执行;0值引起第二条语句的执行,如果它存在的话。这规则典型的“else”二义性,可以用一种“最近嵌套”义性。if_stmt( if ( expression ) statement else statement;根据自身情况如果要实现不带else的语句。 2. statement ( expression ; | ; 3. expression( var = expression | simple-expression 4. var ( ID | ID [ expression ] 表达式是一个

文档评论(0)

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

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

1亿VIP精品文档

相关文档