编译原理自上而下语法分析

编译原理自上而下语法分析

ID:14417337

大小:250.50 KB

页数:11页

时间:2018-07-28

编译原理自上而下语法分析_第1页
编译原理自上而下语法分析_第2页
编译原理自上而下语法分析_第3页
编译原理自上而下语法分析_第4页
编译原理自上而下语法分析_第5页
资源描述:

《编译原理自上而下语法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.课程设计目的:1.1设计目的:通过编程实现语法分析(自上而下,自下而上)的可视化过程,加深对两法分析原理思想的理解。[目的要求] 通过设计编制调试一个具体的语法分析程序,加深对语法分析原理的理解。 并掌握在对程序设计语言源程序进行扫描过程中将其进行语法分析的方法。 [题目分析] 递归下降分析方法是一种确定的自上而下分析方法。它的基本思想是给文法的每一个非终结符均设计一个相应的子程序。由于文法的产生式往往是递归的,因为这些子程序往往也是递归的。 1.2开发环境:操作系统:WindowsXP辅助工具:VisualStudio2008编程语言:C#2.课程设计要求(1)选定一文法,选定一种分析

2、方法(自上而下、自下而上)(2)允许用户输入语句并对该语句进行相应的语法分析(3)要求显示语法树的建立过程以及跟踪分析表和分析栈的状态(4)要提供单步运行,让用户跟踪分析器工作的每一个步骤。3.总体设计3.1设计框架:11定义两个栈:分析栈、输入栈初始化“分析栈”:“&”、“E”分别入栈初始化“输入栈”:把用户输入的字符串,按倒序每一个分别压入栈初始化后,开始进行自上而下的分析,对于每一步分析,分析栈和输入栈都有相应的出栈入栈动作,分析栈的内容在界面的“栈”中显示,输入栈的内容在界面的“输入“中显示,查表结果在界面的“输出”中显示得出分析结果结束开始3.2程序流程图:11开始输入将要分析的字

3、符串该元素是终结符?取分析栈栈顶元素NY该终结符是&Y分析成功N分析栈与输入栈的栈顶元素分别出栈该元素是非终结符YN分析失败查找该元素在非终结符数组中的下标line,返回;取输入栈栈顶元素,并求其在终极符数组中的下标row,返回取col=line*6row,根据col取分析表数组中的字符串mystring[col]该字符串是’’FALSE’’NY是“ε”YN分析失败分析栈栈顶元素出栈分析栈顶元素出栈,把该字符串按倒序一一压入分析栈 4.设计功能描述:11(1)该课程设计对语法分析指定了固定的文法,运行界面为:“开始”,会出现提示:。(3)用户输入字符串,可以点击“”,软件根据该输入字符串做好

4、初始化工作,再点击“”,开始分析,每一次点击“下一次”,就做分析的一个步骤,并且此时分析栈和输入栈做相应的出栈、入栈的的动作,同时在“分析栈”,“输入栈”,“输出栈”会显示出相应的状态。(4)分析结果显示在中(5)如果在分析完后,还需要继续输入字符串分析的画,点击“”,可以再次作上述的操作。(6)如果想退出程序,点击““,此时会弹出提示窗口:11,点击“确定”,便退出程序。分析实例:输入分析的字符串为i*(i+i)结果如下: 5.源程序代码:11#region相关初始量(都是全局的)publicstring[]mystring={"TC","FALSE","FALSE","TC","FALS

5、E","FALSE","FALSE","+TC","FALSE","FALSE","ε","ε","FD","FALSE","FALSE","FD","FALSE","FALSE","FALSE","ε","*FD","FALSE","ε","ε","i","FALSE","FALSE","(E)","FALSE","FALSE"};//分析表数组boolcon=true;//控制显示的布尔量privateStackMyStack=newStack();//申请一个分析栈privateStackMyInputstack=newStack();//申请一个输入栈publicstring[]Te

6、rm={"i","+","*","(",")","&"};//终结符数组publicstring[]unTerm={"E","C","T","D","F"};//非终结符数组privateintline,row;//定义行,列的全局变量stringMyNowString;#endregion“开始”按钮实现的函数privatevoid开始_Click(objectsender,EventArgse){if(Input_richTextBox1.Text==""){MessageBox.Show("请输入要分析的字符串!");}else{this.MyOutput_listBox3.Items

7、.Add("");MyStack.Push("&");MyStack.Push("E");MyStack_listBox1.Items.Add("&E");MyInput_listBox2.Items.Add(Input_richTextBox1.Text+"&");MyInputstack.Push("&");for(inti=Input_richTextBox1.Text.Length-1;i>=0;i-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。