资源简介

只限定为字母,可对文法做等价压缩变换 Superwhite (深白色) qq:411373639

资源截图

代码片段和文件信息

//////////shenbaie/////////////08.09.22///////////////

#include “iostream.h“
#include “stdio.h“
#include “string.h“
#define max 255
//********************************************
struct law{
char ll;
char lr[max];
int del;
int fl;
int fr;
}law[max];
int  ijkh;
int static m;
int count f;
int static num1num2num_vnnum_vt;
char cvn[max]cvt[max];

//*******************************************

bool isUp(char ch) //判断一个字符 
{
    return (ch>=‘A‘ && ch<=‘Z‘);
}
bool isLow(char ch)
{
    return (ch>=‘a‘ && ch<=‘z‘); 
}
bool IsDigit(char ch) 

return(ch>=‘0‘&&ch<=‘9‘); 

//**************************************************
void input() // 输入规则并得到终结非终结符个数
{
num1=0; num2=0;
cout<<“输入规则个数:“; cin>>f; count=f;
for(i=0;i {
j=0;
cin>>law[i].ll; cout<<“::=“;
cin>>law[i].lr; cout< law[i].fl=0; law[i].fr=0; law[i].del=0; //初始化
cvn[num1]=law[i].ll; num1++; //cvn

while(law[i].lr[j]!=‘\0‘)
{
cvt[num2]=law[i].lr[j]; //cvt
j++; num2++;
}
}

num_vn=num1; num_vt=num2;
for(i=0;i {
for(j=i+1;j {
if(cvn[i]==cvn[j])
num_vn--;
if(isLow(cvn[i]))
num_vn--;
}
}
//********************test*************
cout<<“左边:“;
for(i=0;i cout< cout<
for(i=0;i {
if(isUp(cvt[i])) // 大写-1
num_vt--;
for(j=i+1;j {
if(cvt[i]==cvt[j])
num_vt--;
}
}
//***********test****************
cout<<“右边:“;
for(i=0;i cout< cout<
cout<<“你输入的规则中--非终结符:“<}
//*****************************************
void Rule1()
{
int over=0;
law[0].fl=1;
for(i=0;i {
if(strlen(law[i].lr)==1 && isUp

评论

共有 条评论