编译原理
课
程
设
计
设计题目:SLR(1) 分析法
学生姓名:
系 别:计算机科学与工程
专 业:计算机科学与技术
班 级:
学 号:
指导教师:
一﹑实验目的:
设计,编制并调试一个 SLR(1)词法分析程序,加深对词法分析原理的理解。
二﹑实验要求:
SLR(1)分析法是一种简单而使用的方法,其造表算法简单,状态数目少,
且大多数程序设计语言都可以用 SLR(1)文法来定义。要求学会如何定义大多数
程序设计语言。
三﹑算法思想:
SLR(1)语法分析器程序流程图:
四﹑源代码:
SLR(1)语法分析器源程序:
#include "string.h"
#include "stdio.h"
#include "dos.h"
#include "conio.h"
#define MOVEIN 1
#define GUIYUE 2
#define ACC 3
#define OK 1
#define ERROR 0
#define MAXSH 7
#define MAXSHL 10
#define MAXINPUT 50
#define maxsize 100
int act;
int ip=0;
int line=0; /*line 为要写的行号,全局变量*/
int writeok;
int right;
char wel[30] = {"Welcome To chaojie System"};
char ente[76]={" 欢迎!"};
char rights[40]={"Copyright (c) 2002"};
struct date today;
struct time now;
typedef struct
{int data[maxsize];
int top;
}stack;
int emptystack(stack *S)
{if(S->top==48&&S->data[S->top]==35)return(1); /*35 is '#'*/
else return(0);
}
int push(stack *S,int x)
{if(S->top>=maxsize-1)return(-1);
else{S->top++;
S->data[S->top]=x;
return(0);
}
}
int gettop(stack *S)