| | |
Cpp syntax detector
i don't know how it happen but the exe formed after compilation was 1.23 MB which has never happen before.
/* Title: Detect 5R Version: Test Mode Started Date : 19 Jan 2009 Last Update : 30 Jan 2009 Revised: 4 */ #include <iostream> #include <windows.h> #include <conio.h> using namespace std; HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE); FILE *fp; #define TxtAttrib(x) SetConsoleTextAttribute(hConsole, x) #define DefTxt SetConsoleTextAttribute(hConsole,15) #define Marker(x) {\ TxtAttrib(10);\ cout<<(char)x;\ DefTxt;\ } #define buffer_pp {\ buffer=fgetc(fp);\ if(buffer==EOF) return EOF;\ } /* Color Attribute = foreground(%d) + background(%d) * 16 0 = Black 1 = Blue 2 = Green 3 = Aqua 4 = Red 5 = Purple 6 = Yellow 7 = Gray 8 = Dark Gray 9 = Brit Blue A = Brit Green B = Brit Aqua C = Brit Red D = Brit Purple E = Brit Yellow F = Brit White */ #define Color_Preprocess 2 #define Color_Comment 6 #define Color_Char 4 #define Color_String 12 #define Color_Numeric 5 #define Color_Datatypes 10 #define Color_Conditional 14 #define Color_Function 11 #define Color_Loop 15+9*16 int run_check1=0, run_check2=0, keyword_filter=0, keyword_found=0, function_found=0, function_flag=0; int read_file(); int check1(); int check2(int); int main(int argc, char *argv[]) { if(argc>1) fp=fopen(argv[1], "r"); else fp=fopen("Detect5R2.cpp","r"); if(!fp){ cout<<"WARNING: A file doesn't exist.\n"; exit(0); } system("color 0f"); read_file(); printf("\n\"#\" check1: %4d check2: %4d\ keyword filter: %4d keyword found: %4d\ function found: %4d\ \n", run_check1, run_check2, keyword_filter, keyword_found, function_found); system("pause"); return 0; } void readtill(int *buffer, int code) { cout<<(char)*buffer; for(*buffer=fgetc(fp); *buffer!=EOF && *buffer!=code; *buffer=fgetc(fp)) cout<<(char)*buffer; } int i, buffer; char word[20]; int compare(char word[]) { keyword_filter++; switch(i) { case 2: if(strcmp(word, "if")==0) return 'c'; else if(strcmp(word, "do")==0) return 'l'; break; case 3: if(strcmp(word, "for")==0) return 'l'; else if(strcmp(word, "int")==0) return 'd'; break; case 4: if(strcmp(word, "case")==0) return 'c'; else if(strcmp(word, "char")==0) return 'd'; else if(strcmp(word, "else")==0) return 'c'; else if(strcmp(word, "void")==0) return 'd'; else if(strcmp(word, "goto")==0) return 'k'; break; case 5: if(strcmp(word, "while")==0) return 'l'; else if(strcmp(word, "using")==0) return 'k'; else if(strcmp(word, "break")==0) return 'k'; else if(strcmp(word, "const")==0) return 'k'; break; case 6: if(strcmp(word, "switch")==0) return 'l'; break; case 8: if(strcmp(word, "continue")==0) return 'k'; } //Marker(175); return 0; } int check2(int flag_keyword) { run_check2++; i=0; for(;;) { if((buffer>='A' && buffer<='Z') || (buffer>='0' && buffer<='9') || (buffer=='_') ) flag_keyword=0; else if(!(buffer>='a' && buffer<='z')) break; word[i++]=buffer; buffer_pp; } word[i]='\0'; if(flag_keyword==1) switch(compare(word)) { case 'l': TxtAttrib(Color_Loop); i=-'l'; break; case 'c': TxtAttrib(Color_Conditional); i=-'c'; break; case 'd': TxtAttrib(Color_Datatypes); i=-'d'; break; case 'k': TxtAttrib(13); i=-'k'; break; case 0: goto function; } else { function: //Marker(173); if(buffer=='(') { function_found++; function_flag+=2; TxtAttrib(Color_Function); cout<<word<<'('; DefTxt; until: buffer_pp; if(check1()==')' && function_flag>0) { function_flag--; TxtAttrib(Color_Function); cout<<"\b)"; DefTxt; } else { if(!((buffer>='0' && buffer<='9') || buffer==',' || buffer=='*' || buffer=='[' || buffer==']' ) ) //Quick Patch cout<<(char)buffer; goto until; } buffer_pp; return 1; } } cout<<word; //if(i>1) Marker(174); if(i<0) { keyword_found++; DefTxt;} //change colour only when needed return 0; } int stat; int check1() { run_check1++; if(buffer>='0' && buffer<='9') { TxtAttrib(Color_Numeric); cout<<(char)buffer; DefTxt; return buffer; } if((buffer>='A' && buffer<='Z') || buffer=='_') if(check2(0)==EOF) return EOF; if(buffer>='a' && buffer<='z') if(stat=check2(1)==EOF) return EOF; switch(buffer) { case '/': //what about the line extention using escape sequence buffer_pp; if(buffer=='/' || buffer == '*') { TxtAttrib(Color_Comment); cout<<'/'; if(buffer=='/') readtill(&buffer, '\n'); else { rep: readtill(&buffer, '*'); cout<<(char)buffer; buffer_pp; if(buffer!='/') goto rep; } cout<<(char)buffer; DefTxt; } break; case '#': TxtAttrib(Color_Preprocess); cout<<'#'; for(buffer=fgetc(fp); buffer!=EOF && buffer!='\n'; buffer=fgetc(fp)) { cout<<(char)buffer; if(buffer=='\\') { buffer=fgetc(fp); //bypassing the '\n' as per Dev-C++ 4.9.9.2 IDE cout<<(char)buffer; continue; } } cout<<(char)buffer; DefTxt; break; case '"': TxtAttrib(Color_String); cout<<'"'; for(buffer=fgetc(fp); buffer!=EOF && buffer!='\n' && buffer!='"'; buffer=fgetc(fp)) { cout<<(char)buffer; if(buffer=='\\') { buffer=fgetc(fp); //bypassing the '\n' as per Dev-C++ 4.9.9.2 IDE cout<<(char)buffer; continue; } } cout<<(char)buffer; DefTxt; break; case 39: //char ' TxtAttrib(Color_Char); do{ cout<<(char)buffer; buffer_pp; }while(buffer!=39); cout<<(char)39; DefTxt; break; case ' ': spacekill: for(;;) //space kill { if(buffer==' ') cout<<' ';//(char)250; else return check1(); buffer_pp; } break; case '\n': //cout<<(char)20; case ';': cout<<(char)buffer; buffer_pp; goto spacekill; case '(': case ')': if(stat==0) cout<<(char)buffer; break; default: cout<<(char)buffer; } return buffer; } int read_file() { for(;;) { buffer_pp; if(check1()==EOF) {cout<<"EOF"; return EOF;} } }
Similar Threads
- Web Link Detector (Visual Basic 4 / 5 / 6)
- Edge detector (Java)
- GUI: 3 C:\Dev-Cpp\lolLOLlol.cpp expected `,' or `;' before numeric constant (C++)
- main.cpp(147) : error C2143: syntax error : missing ';' before '<' (C++)
- MySQL syntax error check for the right syntax to use near 'A (A) )' at line 1 (PHP)
| Thread Tools | Search this Thread |
ace_thread api array based binary bitmap borland c++ c/c++ calling char class classes code coding compile console conversion count delete delete-line deploy desktop developer directshow dll download dynamic dynamiccharacterarray email embedded encryption error file forms fstream function functions game givemetehcodez graph gui homeworkhelp homeworkhelper iamthwee ifstream information input int integer java lib linkedlist linker loop looping loops map math mathhomeworkhelp matrix memory multiple news node number numbertoword output parameter pointer problem program programming project python random read recursion reference reverse richedit rpg string strings temperature template test text text-file tree url variable vector video win32 windows winsock word wordfrequency wxwidgets



