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

📄 scaner.h

📁 设计一个实用的小型类C语言的编译器
💻 H
字号:
#ifndef SCANER
#define SCANER
#include"hao1.h"
void scaner()
{
	m=0;
	sum=0;
	for(i=0;i<8;i++) token[i]=NULL;
	if(!infile.eof())
	{
          ch=infile.get();
       while(ch==' '||ch=='\n'||ch=='\t')
		{
			if(ch=='\n')row++;//源代码的行数
			ch=infile.get();
		}
      if(isalpha(ch))
	  {   
		token[m++]=ch;
		ch=infile.get();
		while(isalpha(ch)||isdigit(ch))
		{
			token[m++]=ch;
			ch=infile.get();
		}
		infile.seekg(-1,ios::cur);
		token[m++]='\0';
		syn=10;
		for(n=0;n<7;n++)
		{	if(strcmp(token,rwtab[n])==0)
			{
		     	syn=n+1;
				break;
			}
		}
	}
	else if(isdigit(ch))
	{
		while(isdigit(ch))
		{
			sum=sum*10+ch-'0';
			ch=infile.get();

		}
		syn=20;
		infile.seekg(-1,ios::cur);  //向前移动输入文件的指针
	}

	else
		switch(ch)
	{
		case '<': m=0;token[m++]=ch;
			ch=infile.get();
		 if(ch=='=')
		{
				syn=38;
				token[m++]=ch;
		}
		else 
		{
			syn=36;
		}
				break;
		case '>':
			m=0;
			token[m++]=ch;
			ch=infile.get();
			if(ch=='=')
			{
				syn=37;
				token[m++]=ch;
			}
			else 
			{
				syn=35;
			}
			break;
		case '=':
			m=0;token[m++]=ch;
			ch=infile.get();
			if(ch=='=')
			{
				syn=39;
				token[m++]=ch;
			}
		    else
			{
				infile.seekg(-1,ios::cur);
		    	syn=21;
			}
			break;
		case '!':
             m=0;token[m++]=ch;
			 ch=infile.get();
			 if(ch=='=')
			 {
				 syn=40;
				 token[m++]=ch;
			 }
			 break;
		case '+':syn=22;token[m++]=ch;break;
		case '-':syn=23;token[m++]=ch;break;
    	case '*':syn=24;token[m++]=ch;break;
		case '/':syn=25;token[m++]=ch;break;
		case '#':syn=0;token[m++]=ch;break;
		case ';':syn=34;token[m++]=ch;break;
		case '(':syn=26;token[m++]=ch;break;
		case ')':syn=27;token[m++]=ch;break;
		case '[':syn=28;token[m++]=ch;break;
	    case ']':syn=29;token[m++]=ch;break;
		case '{':syn=30;token[m++]=ch;break;
		case '}':syn=31;token[m++]=ch;break;
		case ':':syn=33;token[m++]=ch;break;
		case ',':syn=32;token[m++]=ch;break;
	//	case '\0':syn=1000,token[m++]=ch;break;
		default: syn=-1;
	}
 }
}
#endif

⌨️ 快捷键说明

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