毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

算符优先分析法语法分析-编译原理

更新时间:2010-3-22:  来源:毕业论文

算符优先分析法语法分析-编译原理
一、设计目的
通过课程设计,真正掌握设计和构造编译程序的基本原理和常用的编译技术,具备系统软件调试能力和开发能力,培养分析问题和解决问题的能力。
二、设计内容
对以下文法,采用算符优先分析法,对G[S]所定义的赋值语句进行语法分析,并在语法分析过程中将所输入的赋值语句翻译为四元式。
1.直接输入根据已知文法构造的算符优先关系矩阵。
2.输入已知文法的FIRSTVT和LASTVT集合,由程序自动生成该文法的算符优先关系矩阵。
S → A
A → V:=E
E → E + T | T
T → T * F | F
F → (E) | i
V → i
•确定文法的机内表示形式;
•确定优先关系矩阵的存放方式

三、设计思想和主要数据结构
   首先求出该文法的优先关系表,在程序中用2维数组表示,-1表示小于或者等于,大于为1,其它为0表示错误。
  在输入一串字符串以后进行按照文法一步一步的进行规约,我所进行的是直接规约到文法的符号而不是规约到N。
数据结构使用的是链表,用一个STRUCT来表示一个元素,其中包含符号和下一个符号的指针。
四、心得体会
 开始的时候由于编译原理课学的不怎么好,连题目都看不懂,后面又把课本又复习了一下,才选了算符优先文法。通过设计,对算符优先文法有了更深入的了解,原来并不理解算符优先文法为什么会设计成那样,后面经过程序的逐步调试,也逐步理解算符文法的设计原理。
 由于我们班选编译课设的人就我一个,因此在设计程序的时候很难受,完全没有讨论的机会。
五、程序清单
 
// 编译原理.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


/****************************************/
/*    算符优先分析程序*/
/****************************************/

struct Lchar
{
  char char_ch;
  struct Lchar *next;
}LLchar,*p,*h,*temp,*top,*base;
int table[7][7]={{0,1,1,1,0,1,1},
    {-1,1,0,-1,-1,1,1},
    {-1,-1,0,-1,-1,0,1},
    {-1,1,0,1,-1,1,1},
    {-1,-1,0,-1,-1,0,0},
    {0,1,0,1,0,1,1},
 {-1,0,-1,0,0,0,-1}};
//存储算符优先关系表,大于为,小于或等于为-1,其它为表示出错
char curchar;
char curcmp;
int right;  /*设置开关项,当出错时为*/
int i,j;
int k;      /*比较字符在栈的位置*/
void push(char pchar)  /*入栈函数*/
{
 temp=(Lchar*)malloc(sizeof(LLchar));
 temp->char_ch=pchar;
 temp->next=top;
 top=temp;
}
char pop(void)  /*出栈函数*/
{
 char c;
 c=top->char_ch;
 if(top->char_ch!='#') {
 top=top->next;
 }
 return c;

}
int changchartoint(char ch)  /*将字符转为数字,以得到算符优先值*/ 
www.lwfree.cn
  case 'i':t=0;break;
  case '+':t=1;break;
  case '=':t=2;break;
  case '*':t=3;break;
  case '(':t=4;break;
  case ')':t=5; break;
  case '#': t=6;
 }
 return t;
}
void guiyue(){
 char tempc;
 char tempc1;
 char tempc2;
 char tempc3;
 char popc;
 tempc = pop();
 tempc1=pop();
 if(tempc=='i')
 {
  
  if(tempc1=='#')
  {
   push('V');
   k=1;
  }917

[1] [2] [3] 下一页

算符优先分析法语法分析-编译原理下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。