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

📄 scaner.h

📁 用c语言编写的关于pascal语言语法分析,词法分析,语义分析(输出有点问题)
💻 H
字号:
char prog[80],token[8];    //源程序与目标代码
char ch;
int syn,p,m,n,sum;         //p->prog,m->token
char *rwtab[6]={"begin","if","then","while","do","end"};  //关键字scaner()
scaner()
{
	for(n=0;n<8;n++) token[n]=NULL;
	m=0;
	ch=prog[p++];
	while(ch==' ') ch=prog[p++];
	if(ch>='a'&&ch<='z')
	{
		while((ch>='a'&&ch<'z')||(ch>='0'&&ch<='9'))
		{
			token[m++]=ch;
			ch=prog[p++];
		}
		token[m++]='\0';
		p--;
		syn=10;
		for(n=0;n<6;n++)
		   if(strcmp(token,rwtab[n])==0)
		   {
			   syn=n+1;
			   break;
		   }
	}
	else if(ch>='0'&&ch<='9')
	{
		sum=0;
		while(ch>='0'&&ch<='9')
		{
			sum=sum*10+ch-'0';
			ch=prog[p++];
		}
		p--;
		syn=11;
	}
	else 
	{
		switch(ch)
		{
		case '<':m=0;token[m++]=ch;
			     ch=prog[p++];
				 if(ch=='>')
				 {
					 syn=21;
					 token[m++]=ch;
				 }
				 else if(ch=='=')
				 {
					 syn=22;
					 token[m++]=ch;
				 }
				 else 
				 {
					 syn=20;
					 p--;
				 }
				 break;
		case '>':m=0;token[m++]=ch;
			     ch=prog[p++];
				 if(ch=='=')
				 {
					 syn=24;
					 token[m++]=ch;
				 }
				 else 
				 {
					 syn=23;
					 p--;
				 }
				 break;
		case ':':m=0;token[m++]=ch;
			     ch=prog[p++];;
				 if(ch=='=')
				 {
					 syn=18;
					 token[m++]=18;
				 }
				 else
				 {
					 syn=17;
					 p--;
				 }
				 break;
		case '+':syn=13;token[0]=ch;break;
        case '-':syn=14;token[0]=ch;break;
		case '*':syn=15;token[0]=ch;break;
	    case '/':syn=16;token[0]=ch;break;
		case ';':syn=26;token[0]=ch;break;
		case '#':syn=0;token[0]=ch;break;
		default:syn=-1;
		}
	}
	return 0;
}

⌨️ 快捷键说明

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