⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grammar.cpp

📁 输入任意文法
💻 CPP
字号:
#include <stdio.h>
#include <iostream.h>
#include <string.h>

#define N 3    /*文法共有N条规则*/
#define M 20   /*每条规则最多有M个字符*/

void main()
{
	int i,j,t;/*标志量*/
	char n[N][M]; /*文法*/                     int cnt[N];/*每个文法的字符个数*/
	char m1[N*M];/*除去非终结符的符号集合m1*/  int cnt1=0;/*除去非终结符的符号集合m1*/
	char m2[N*M]; /*终结符*/                   int cnt2=1;/*终结符*/
    char p[N+1];/*非终结符*/

	/*输入文法*/
	printf("请输入文法 :\n");
	for(i=0;i<N;i++)
		gets(n[i]);

	/*输出文法*/
	printf("\n输出文法 :\n");
	for(i=0;i<N;i++)
		puts(n[i]);

	printf("\n\n\n");
	
	/*各个规则n[i]的符号个数cnt[i]*/
	for(i=0;i<N;i++)
		cnt[i]=strlen(n[i]);
	
	/*非终结符组成的集合p*/
	printf("非终结符是 :\n ");
	for(i=0;i<N;i++)
		p[i]=n[i][0];
	p[N]='\0';
	puts(p);
	
	/*终结符组成的集合m2*/	
		/*除去非终结符的其他符号组成的集合m1*/
	for(i=0;i<N;i++)
		for(j=4;j<cnt[i];j++)
			m1[cnt1++]=n[i][j];
	m1[cnt1]='\0';
		/*终结符组成的集合m2*/	
	m2[0]=m1[0];
	for(i=1;i<cnt1;i++)
	{			
		t=0;
		for(j=0;j<cnt2;j++)	
		{
			if(m1[i]==m2[j])
				t=1;
		}
		if((t==0) && (m1[i]!='|'))
			m2[cnt2++]=m1[i];
	}
	m2[cnt2]='\0';	
	printf("终结符是 :\n");	
	puts(m2);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -