循环语句的语法分析及语义分析程序设计.doc

循环语句的语法分析及语义分析程序设计.doc

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

学 号: 0120510680224 课 程 设 计 题 目 WHILE循环语句的翻译程序设计(递归下降法、输出三地址表示) 学 院 计算机科学与技术学院 专 业 软件工程 班 级 0502班 姓 名 杨松林 指导教师 彭德巍 2008 年 6 月 21 日 循环语句的语法分析及语义分析 设计题目 基于递归下降分析法的循环语句WHILE E DO S1的语法及语义分析程序,其中E为布尔表达式,S1为赋值语句。输出的中间代码选用三地址码。 摘要和关键字 摘要:递归下降分析法是确定的自上而下的分析法,这种分析法要求文法是LL(1)文法。他的基本思想是对文法中的每个非终结符编写一个函数(或子程序)。每个函数的功能是识别由该非终结符所表示的语法成分。 根据递归下降的方法,同时利用C++语言对输入的WHILE E DO S1循环语句进行文法分析,并输出其对应的三地址码。 关键字:递归下降分析法,LL(1)文法,语法分析 Abstract: Recursive drop analysis is the top-down analysis to determine that such analysis is required grammar LL (1) grammar. It’s basic idea of grammar at the end of each non-preparation of a function (or subroutine). Each function is to identify the function expressed by the NGOs at the end of the grammatical elements. According to drop the recursive method, using the C++ language to input its real grammar analysis, NBL(a language invented by Lukasiewicz) is the real output of its counterparts. Keywords: Recursive drop analysis, LL (1) grammar, syntax analysis 正文 3.1引言 递归下降分析法是一种自上而下的语法分析方法,所谓自上而上分析法,就是从文法的开始符号出发,根据文法规则正向推导出给定句子的一种方法。在用递归下降分析法时要注意所选用的文法必须是LL(1)文法。 3.2需求分析 WHILE〈布尔表达式〉DO〈赋值语句〉,其中: (1)选择递归下降法法完成以上任务,中间代码选用三地址码。 (2)写出符合分析方法要求的文法,给出分析方法的思想,完成分析程序设计。 程序设计的环境和工具为Windows环境下的Visual C++。 3.3数据结构设计 3.3.1文法的描述 终结符:有VT={WHILE、、、*、/、+、-、=、DO、、id、digit、;} 非终结符:有VN={S,E,F,M,T,P,B} 开始符号: 开始符号S={S} 产生式:S-id=M |WHILE E do S E-B B | B B M-TF|T F- +TF |-TF|ε T-BP|B P-*BP|/BP|ε B-id|digit 3.3.2简要分析与概要设计 出现在循环语句WHILE E DO S1中的布尔表达式E,它的作用在于控制对S1的选择。作为转移条件的布尔式E,我们可以赋予它“出口”,出向S1。本程序采用递归向下分析法,在语法分析的过程中输出中间代码。逆波兰代码采用结构体存放,在输出逆兰式函数中,分别定义操作数数组nbl1[10]和操作符数组nbl2[20],并利用二重循环逆向输出三地址码。定义存储结构及函数如下: #define MAX_TOKEN 256 //Token表大小 词法分析 #define MAX_QUAD 256 //三地址码数组大小 Token tokentable[MAX_TOKEN]; //建立词法表 Quad quad[MAX_QUAD]; //建立三地址码表 bool cifa(); //词法分析函数

文档评论(0)

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

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

1亿VIP精品文档

相关文档