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

📄 codelex.c

📁 linux 下类似于TC功能的编译器,但还没有完成,希望大家共同研究
💻 C
字号:
#include "codelex.h"void linecolor(chtype *line){	int i, k,pos=0;	int wordbegin,wordend;	int color;	char a[MAXIDLEN + 1];	char orgline[CODE_QUANTUM];	char ch;		wordbegin=0;	wordend=0;endwin();	sprintf(&ch,"%c",line);	fprintf(stderr,"%s",orgline);exit(0);	while(ch==' ' && pos+1<CODE_QUANTUM)	{		pos++;		ch=line[pos];	}	if(pos+1>=CODE_QUANTUM)		goto over;	if( isalpha(ch) )	{		k=0;		wordbegin=pos;		do		{			if(k < MAXIDLEN)				a[k++]=ch;			if(pos+1<CODE_QUANTUM)				ch=line[++pos];			else				goto over;		}while( isalpha(ch) || isdigit(ch) );		wordend=pos;		a[k]=0;		keyword[0]=a;		i=NRW;		while(strcmp(a,keyword[i--]));		if(++i)		{			color=2;		}	//key word		else		{			color=3;		}	//identifier		while(wordbegin<=wordend)		{			line[wordbegin]=line[wordbegin]|COLOR_PAIR(color);			wordbegin++;		}	}//	else if ( isdigit(ch) )//	{//		k=0;//	}	over:	return;}void getsym(void){	if (isalpha(ch))	{ // symbol is a reserved word or an identifier.		k = 0;		do		{			if (k < MAXIDLEN)				a[k++] = ch;			getch();		}		while (isalpha(ch) || isdigit(ch));		a[k] = 0;		strcpy(id, a);		word[0] = id;		i = NRW;		while (strcmp(id, word[i--]));		if (++i)			sym = wsym[i]; // symbol is a reserved word		else			sym = SYM_IDENTIFIER;   // symbol is an identifier	}	else if (isdigit(ch))	{ // symbol is a number.		k = num = 0;		sym = SYM_NUMBER;		do		{			num = num * 10 + ch - '0';			k++;			getch();		}		while (isdigit(ch));		if (k > MAXNUMLEN)			error(25);     // The number is too great.	}	else if (ch == ':')	{		getch();		if (ch == '=')		{			sym = SYM_BECOMES; // :=			getch();		}		else		{			sym = SYM_NULL;       // illegal?		}	}	else if (ch == '>')	{		getch();		if (ch == '=')		{			sym = SYM_GEQ;     // >=			getch();		}		else		{			sym = SYM_GTR;     // >		}	}	else if (ch == '<')	{		getch();		if (ch == '=')		{			sym = SYM_LEQ;     // <=			getch();		}		else if (ch == '>')		{			sym = SYM_NEQ;     // <>			getch();		}		else		{			sym = SYM_LES;     // <		}	}	else if (ch == '+')	{		getch();		if (ch == '=')			// +=		{			sym = SYM_SELFADD;			getch();		}		else		{			sym = SYM_PLUS;		}	}	else if (ch == '-')	{		getch();		if (ch == '=')		{			sym = SYM_SELFMINUS;			getch();		}		else		{			sym = SYM_MINUS;		}	}	else	{ // other tokens		i = NSYM;		csym[0] = ch;		while (csym[i--] != ch);		if (++i)		{			sym = ssym[i];			getch();		}		else		{			printf("Fatal Error: Unknown character.\n");			exit(1);		}	}} // getsym*/

⌨️ 快捷键说明

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