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

📄 2.cpp

📁 PLX编译器,采用多遍式和自顶向下分析法. (内附测试代码)
💻 CPP
字号:
#include<stdio.h>
#include <string.h>
#define SYMBOLNUM 13
#define KEYNUM 18

bool isaletter(char input)
{
	if((input<='z'&&input>='a')||(input<='Z'&&input>='A'))
      return true;
	else return false;
}
bool isanumber(char input)
{
	if(input<='9'&&input>='0')
      return true;
	else return false;
}

int isasymbol(char input,char* symbol)
{
  for(int i=0;i<SYMBOLNUM;i++)
  {
	if(input==symbol[i])
       return i;
  }
	return -1;

}


int in(char* input,char *keywords)//在关键字中查找 
{
	for(int i=0;i<KEYNUM;i++)
	if(strcmp(input,keywords))return i;
	return -1;
}

int in(char input,char* symbol)
{
	for(int i=0;i<SYMBOLNUM;i++)
		if(input==symbol[i])return i;
	return -1;
}

int getline(char *buf,FILE* fp,char a)//读入一行 返回读到的字符数 buf中保存该行
{
	char c;
	int i=0;
	c=getc(fp);
	if(c==EOF)return-1;

    while(1)
	{
      if(c==a)break;
      *buf++=c;
      i++;
	  c=getc(fp);
	  if(c==EOF)return i;
	}
    return i;
}


int putline(char* buf,int num)
{
	for(int i=0;i<num;i++)
		putchar(buf[i]);
		putchar('\n');
	return 1;
}


void dosomething(FILE *fp,char* buf)
{
    //char buf[50];放在这里的时候,在程序结束的时候会有
	//0xC0000005:Access   Violation.  
	//该成全局变量的时候就好了 

	int num=1;
	while(num!=-1)
	{
   num=getline(buf,fp,'\n');
   if(num!=-1)
   putline(buf,num);
   else return ;
   num=0;
	}

}

void quzhushi(FILE *fp1,FILE *fp2)
{
	char c=' ';
	int i=0;
	while(c!=EOF)
	{	
		c=getc(fp1);
		if(c=='/')
		{
				c=getc(fp1);
				switch(c)
				{
				case '/':
					while(c!=10)
					{
                         c=getc(fp1);
					}
					break;
				case '*':
a:
                    c=getc(fp1);
					while(c!='*')
					{
                        c=getc(fp1);
					}
					c=getc(fp1);
					if(c!='/')goto a;
					break;
				}
		}
         else putc(c,fp2);
	}
}



⌨️ 快捷键说明

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