资源简介

实验2 文法的读入、判定和处理 一、实验目的 熟悉文法的结构,了解文法在计算机内的表示方法。 二、实验内容 1、 设计一个表示文法的数据结构; 2、 从文本文件中读入文法,利用定义的数据结构存放文法,并输出; 3、 本实验结果将来还有用。 三、实验要求 1、 了解文法定义的4个部分: G(Vn, Vt, S, P) Vn 文法的非终结符号集合,在实验中用大写的英文字母表示; Vt 文法的终结符号集合,在实验中用小写的英文字母表示; S 开始符号,在实验中是Vn集合中的一个元素; P 产生式,分左部和右部,左部为非终结符号中的一个,右部为终结符号或非终结符号组成的字符串,如S-

资源截图

代码片段和文件信息

#include 
#include 
#include 
#define MAX 20
char x[20][100];   //用于存储读入的文法内容 
char y[20][100];     //用于存储产生式 
int maxline=0;          //初始化读入内容的行数 
char *Gdelete(char ch[]);     //定义删除重复字符 
typedef struct    //定义产生式的左部、右部 
{
   char l[5];
   char r[8];
}G;
G g[MAX];
typedef struct   //定义文法的四要素 
{
  char v1[10];
  char v2[10];
  char s[1];
  char p[100];
}GR;
GR gr[MAX];

bool isN(char c)   //定义非终结符 
{
  if(c>=‘A‘&&c<=‘Z‘)
    return 1;
    else return 0;
}
bool isT(char c)    //定义终结符 
{
  if(c>=‘a‘&&c<=‘z‘)
    return 1;
    else return 0;
}
void Ganalyze(FILE *f)  //文法分析 
{
    char ch;
    char *fh;
    int mn;
    int str;
    int hflag=-1;
    char x1[50]={‘ ‘}x2[50]={‘ ‘}xp[50]={‘ ‘};
    char *temp1*temp2*

评论

共有 条评论