毕业论文范文网-论文范文
电气工程 会计论文 金融论文 国际贸易 财务管理 人力资源 学前教育 德语论文 工程管理 文化产业 工商管理 会计专业 行政管理 广告学
机械设计 汉语文学 英语论文 物流论文 电子商务 法律论文 工商管理 旅游管理 市场营销 药学论文 播音主持 人力资源 金融论文 保险学
制药工程 生物工程 包装工程 模具设计 测控专业 工业工程 教育管理 行政管理 计算机论 电子信息 市场营销 法学论文 财务管理 投资学
体育教育 小学教育 印刷工程 土木工程 书法论文 护理论文 心理学论 信息管理 公共事业 给水排水 新闻专业 摄影专业 广电编导 经济学
  • 范文首页 |
  • 毕业论文 |
  • 论文范文 |
  • 计算机论文 |
  • 外文翻译 |
  • 工作总结 |
  • 工作计划 |
  • 现成论文 |
  • 论文下载 |
  • 教学设计 |
  • 免费论文 |
  • 原创论文 |
搜索 高级搜索

原创毕业论文

当前位置:毕业论文范文网-论文范文 -> 论文下载 -> 计算机毕业论文范文

编译原理课程设计实验报告——基于算符优先分析方法的表达式语法分析器

 本文ID:ZJWD240675 充值:150元
免费毕业论文范文
免费毕业论文
政治工作论文
计算机论文
营销专业论文
工程管理论文范文
医药医学论文范文
法律论文范文
生物专业论文
物理教学论文范文
人力资源论文范文
化学教学论文范文
电子专业论文范文
历史专业论文
电气工程论文
社会学专业论文
英语专业论文
行政管理论文范文
语文专业论文
电子商务论文范文
焊工钳工技师论文
社科文学论文
教育论文范文
数学论文范文
物流论文范文
建筑专业论文
食品专业论文
财务管理论文范文
工商管理论文范文
会计专业论文范文
专业论文格式
化工材料专业论文
英语教学专业论文
电子通信论文范文
旅游管理论文范文
环境科学专业论文
经济论文
人力资源论文范文
营销专业论文范文
财务管理论文范文
物流论文范文
财务会计论文范文
数学教育论文范文
数学与应用数学论文
电子商务论文范文
法律专业论文范文
工商管理论文范文
汉语言文学论文
计算机专业论文
教育管理论文范文
现代教育技术论文
小学教育论文范文
机械模具专业论文
报告,总结,申请书
心理学论文范文
学前教育论文范文

收费计算机专业论文范文
收费计算机专业论文
Delphi
ASP
VB
JSP
ASP.NET
VB.NET
java
VC
pb
VS
dreamweaver
c#.net
vf
VC++
计算机论文
扫一扫 扫一扫
毕业论文范文题目: 编译原理课程设计实验报告——基于算符优先分析方法的表达式语法分析器,论文范文关键词: 编译原理课程设计实验报告——基于算符优先分析方法的表达式语法分析器
编译原理课程设计实验报告——基于算符优先分析方法的表达式语法分析器毕业论文范文介绍开始:
   一、设计目的
  了解用算符优先法对表达进行语法分析的方法,掌握自顶向下的预测语法分析程序的手工构造方法。
  二、设计内容
  对简单表达式文法构造算符优先分析器。
  三、设计要求
  1、对下列简单表达式文法G[ E’]构造算符优先关系表。
  E’ →# E #
  E → E + T | T
  T → T * F | F
  F → P / F |P
  P → ( E )|i
  2、根据算符优先关系表,使用栈结构来实现算符优先分析:设置两个栈:存放运算符的OPTR栈和存放操作数或运算结果的OPND栈。具体算法描述如下:
  (1)首先置操作数OPND栈为空栈,将#入运算符OPTR栈。
  (2)依次读入表达式中每个单词,若是操作数则进OPND栈,若是运算符则转(3)。
  (3)当前设读入的运算符为θ2,查找算符优先关系表,比较θ2与OPTR栈顶元素θ1 :
  若θ1﹤θ2,则θ2进OPTR栈,转(2);
    若θ1=θ2, 如θ2为#,则分析成功,否则OPTR栈顶元素θ1出栈,并转(2);
   若θ1>θ2,则出栈OPND栈顶元素存放到b,又出栈其新栈顶元素存放到a,再出栈OPTR栈顶元素至t,进行运算r=a t b (t为运算符),并将结果r存入栈OPND后转(2);
  (4)若θ1和θ2之间无优先关系,则报错。
  从键盘输入表达式,利用算符优先法求出其值,如输入表达式有错,则给出报错提示。表达式以“#”结尾。
  四、运行结果
  1、从键盘输入表达式串: 10+15*4#
  输出: 70
  2、从键盘输入表达式串:10+*15+
  输出: The expression is error!
  五、提示
  构造算符优先关系表如下:
   + - * / ( ) i #
  + ﹥ ﹥ ﹤ ﹤ ﹤ ﹥ ﹤ ﹥
  - ﹥ ﹥ ﹤ ﹤ ﹤ ﹥ ﹤ ﹥
  * ﹥ ﹥ ﹥ ﹥ ﹤ ﹥ ﹤ ﹥
  / ﹥ ﹥ ﹥ ﹥ ﹤ ﹥ ﹤ ﹥
  ( ﹤ ﹤ ﹤ ﹤ ﹤ = ﹤
  ) ﹥ ﹥ ﹥ ﹥ ﹥ ﹥
  i ﹥ ﹥ ﹥ ﹥ ﹥ ﹥
  # ﹤ ﹤ ﹤ ﹤ ﹤ ﹤ =
  
  参考严蔚敏等编著、清华大学出版社出版的C语言版《数据结构》P52-P54的表达式求值算法。
  基于算符优先分析方法的表达式语法分析器
  【设计目的】
  了解用算符优先法对表达进行语法分析的方法,掌握自顶向下的预测语法分析程序的手工构造方法。
  【设计内容】
   对简单表达式文法构造算符优先分析器。
  【设计要求】
  对下列简单表达式文法G[ E],构造算符优先关系表。
  E’ →# E #
  E → E + T | T
  T → T * F | F
  F → P / F |P
  P → ( E )|i
  2、根据算符优先关系表,使用栈结构来实现算符优先分析:设置两个栈:存放运算符的OPTR栈和存放操作数或运算结果的OPND栈。具体算法描述如下:
  (1)首先置操作数OPND栈为空栈,将#入运算符OPTR栈。
  (2)依次读入表达式中每个单词,若是操作数则进OPND栈,若是运算符则转(3)。
  (3)当前设读入的运算符为θ2,查找算符优先关系表,比较θ2与OPTR栈顶元素θ1 :
  若θ1﹤θ2,则θ2进OPTR栈,转(2);
  若θ1=θ2, 如θ2为#,则分析成功,否则OPTR栈顶元素θ1出栈,并转(2);
  若θ1>θ2,则出栈OPND栈顶元素存放到b,又出栈其新栈顶元素存放到a,再出栈OPTR栈顶元素至t,进行运算r=a t b (t为运算符),并将结果r存入栈OPND后转(2);
  (4)若θ1和θ2之间无优先关系,则报错。
  3、从键盘输入表达式,利用算符优先法求出其值,如输入表达式有错,则给出报错提示。表达式以“#”结尾。
  【算法思想】
  本题采用算符优先关系表对一个表达式进行求值,首先我们根据文法构造算符优先关系表。如上文所说,构造两个栈:存放运算符的OPTR栈和存放操作数或运算结果的OPND栈。首先置操作数OPND栈为空栈,将#入运算符OPTR栈。
  依次读入表达式中每个单词,若是操作数则进OPND栈,若是运算符,则将其与OPTR栈顶运算符比较优先关系,对于不同的情况做出不同处理。在此过程中,若出现左右括号不匹配,操作数栈的元素参加运算数目不够等情况则报错。
  【变量与函数说明】
  数据结构的定义:
  1、int table[7][7]://存放算符优先关系表的二维数组
  2、存放运算符的OPTR栈:
  typedef struct optr
  {
   int mem[10];
   int top;
   int bottom;
   int sizemax;
  }*OPTR;
  3、存放操作数或运算结果的OPND栈:
  typedef struct opnd
  {
   int mem[10];
   int top;
   int bottom;
   int sizemax;
  }*OPND;
  
  函数说明:
  1、OPTR栈的相关操作函数:
  OPTR OPTRInit();int OPTRPop(OPTR s);void OPTRPush(int s,OPTR S)
  2、OPND栈的相关操作函数:
  OPND OPNDInit();int OPNDPop(OPTR s);void OPNDPush(int s,OPND S)
  3、void main()
  主函数主要实现以下任务:
  首先置操作数OPND栈为空栈,将#入运算符OPTR栈;
  读取字符串,提取字符串中的数字, 进OPND栈;
  剩余的是运算符或括号,分别进行处理:将栈顶操作符与当前操作符进行优先对比,
  都为#,分析成功,打印结果。
  若栈顶操作符>当前操作符,则出栈OPND栈顶元素存放到i,又出栈其新栈顶元素存放到j,根据不同运算符进行计算并将结果r存入栈OPND。
  若栈顶操作符﹤当前操作符,则将当前操作符入栈OPTR。
  若栈顶操作符与当前操作符没有优先关系,报错。
  【实验源代码】
  #include ﹤stdio.h﹥
  #include ﹤string.h﹥
  #include ﹤ctype.h﹥
  #include ﹤stdlib.h﹥
  
  #define add 0
  #define mim 1
  #define mul 2
  #define div 3
  #define zuokuo 4
  #define youkuo 5
  #define end 6 //各个符号在算符优先关系表二维数组中的行号或列号
  。。。。。。。。。
  
  /*******存放运算符的OPTR栈的结构定义和相关操作函数******** */
  typedef struct optr
  {
   int mem[10];
   int top;
   int bottom;
   int sizemax;
  }*OPTR;
  
  OPTR OPTRInit()
  {
   OPTR s;
   s=(OPTR)malloc(sizeof(struct optr));
   s-﹥top=s-﹥bottom=-1;
   return s;
  }
  
  int OPTRPop(OPTR s)
  {
   int i;
   if(s-﹥top==-1) printf("The eession is error!There is no element in OPTR\n");
   else
   {
   s-﹥top--;
   i=s-﹥top+1;
   i=s-﹥mem[i];
   return i;
   }
  }
  
  void OPTRPush(int s,OPTR St)
  {
   int i;
   if(St-﹥top==9)printf("the OPTR is full\n");
   else
   {
   St-﹥top++;
   i=St-﹥top;
   St-﹥mem[i]=s;
   }
  }
  
  /************存放操作数或运算结果的OPND栈的结构定义和相关操作函数***********/
  typedef struct opnd
  {
   int mem[10];
   int top;
   int bottom;
   int sizemax;
  }*OPND;
  
  OPND OPNDInit()
  {
   OPND s;
   s=(OPND)malloc(sizeof(struct opnd));
   s-﹥top=s-﹥bottom=-1;
   return s;
  }
  
  int OPNDPop(OPND s)
  {
   int i;
   int j;
   if(s-﹥top==-1)printf("The eession is error!There is no element in OPND\n");
   else
   {
   s-﹥top--;
   i=s-﹥top+1;
   j=s-﹥mem[i];
   return j;
   }
  }
  
  void OPNDPush(int s,OPND St)
  {
   int i;
   if(St-﹥top==9) printf("the OPND is full\n");
   else
   {
   St-﹥top++;
   i=St-﹥top;
   St-﹥mem[i]=s;
   }
  }
  
  void error( char *m) /**错误输出函数**/
  {
   printf("%s\n",m);
   exit(1);
  }
  
  【运行结果】
  
  
 


以上为本篇毕业论文范文 编译原理课程设计实验报告——基于算符优先分析方法的表达式语法分析器的介绍部分。

本论文在计算机毕业论文范文栏目,由论文网(www.zjwd.net)整理,更多论文,请点论文范文查找

毕业论文降重 相关论文
收费毕业论文范文
收费毕业论文
汉语言文学论文
物理学论文
自动化专业论文
测控技术专业论文
历史学专业论文
机械模具专业论文
金融专业论文
电子通信专业论文
材料科学专业论文
英语专业论文
会计专业论文
行政管理专业论文
财务管理专业论文
电子商务国贸专业
法律专业论文
教育技术学专业论文
物流专业论文
人力资源专业论文
生物工程专业论文
市场营销专业论文
土木工程专业论文
化学工程专业论文
文化产业管理论文
工商管理专业论文
护理专业论文
数学教育专业论文
数学与应用数学专业
心理学专业论文
信息管理专业论文
工程管理专业论文
工业工程专业论文
制药工程专业论文
电子机电信息论文
现代教育技术专业
新闻专业论文
艺术设计专业论文
采矿专业论文
环境工程专业论文
西班牙语专业论文
热能与动力设计论文
工程力学专业论文
酒店管理专业论文
安全管理专业论文
交通工程专业论文
体育教育专业论文
教育管理专业论文
日语专业论文
德语专业论文
理工科专业论文
轻化工程专业论文
社会工作专业论文
乡镇企业管理
给水排水专业
服装设计专业论文
电视制片管理专业
旅游管理专业论文
物业管理专业论文
信息管理专业论文
包装工程专业论文
印刷工程专业论文
动画专业论文
环境艺术专业论文
信息计算科学专业
物流专业论文范文
人力资源论文范文
营销专业论文范文
工商管理论文范文
汉语言文学论文范文
法律专业论文范文
教育管理论文范文
小学教育论文范文
学前教育论文范文
财务会计论文范文

电子商务论文范文

上一篇: 嵌入式系统课程实践论文 下一篇: 编译原理课程设计实验报告——基..

最新论文

精品推荐

毕业论文排版

热门论文


本站简介 | 联系方式 | 论文改重 | 免费获取 | 论文交换

本站部分论文来自网络,如发现侵犯了您的权益,请联系指出,本站及时确认删除 E-mail:229120615@qq.com

毕业论文范文-论文范文-论文同学网(www.zjwd.net)提供计算机毕业论文范文毕业论文,毕业论文范文,毕业设计,论文范文,毕业设计格式范文,论文格式范文

Copyright@ 2010-2024 zjwd.net 毕业论文范文-论文范文-论文同学网 版权所有