📄 codelex.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 + -