ArchDesc::ArchDesc() : _globalNames(cmpstr,hashstr, Form::arena), _globalDefs(cmpstr,hashstr, Form::arena), _preproc_table(cmpstr,hashstr, Form::arena), _idealIndex(cmpstr,hashstr, Form::arena), _internalOps(cmpstr,hashstr, Form::arena), _internalMatch(cmpstr,hashstr, Form::arena), _chainRules(cmpstr,hashstr, Form::arena), _cisc_spill_operand(NULL), _needs_clone_jvms(false) { // Initialize the opcode to MatchList table with NULLs for( int i=0; i<_last_opcode; ++i ) { _mlistab[i] = NULL; } // Set-up the global tables initKeywords(_globalNames); // Initialize the Name Table with keywords // Prime user-defined types with predefined types: Set, RegI, RegF, ... initBaseOpTypes(); // Initialize flags & counters _TotalLines = 0; _no_output = 0; _quiet_mode = 0; _disable_warnings = 0; _dfa_debug = 0; _dfa_small = 0; _adl_debug = 0; _adlocation_debug = 0; _internalOpCounter = 0; _cisc_spill_debug = false; _short_branch_debug = false; // Initialize match rule flags for (int i = 0; i < _last_opcode; i++) { _has_match_rule[i] = false; } // Error/Warning Counts _syntax_errs = 0; _semantic_errs = 0; _warnings = 0; _internal_errs = 0; // Initialize I/O Files _ADL_file._name = NULL; _ADL_file._fp = NULL; // Machine dependent output files _DFA_file._name = NULL; _DFA_file._fp = NULL; _HPP_file._name = NULL; _HPP_file._fp = NULL; _CPP_file._name = NULL; _CPP_file._fp = NULL; _bug_file._name = "bugs.out"; _bug_file._fp = NULL; // Initialize Register & Pipeline Form Pointers _register = NULL; _encode = NULL; _pipeline = NULL; _frame = NULL; }
Scanner::Scanner(): m_token(), m_line_no_start(1), m_line_no_end(m_line_no_start), m_accept_uuids(false), m_token_queue() { if (s_keywords.empty()) initKeywords(); }
static bool keywordIdentifier(Token &x) { x.str.clear(); if (!identStr(x.str)) return false; if (!keywords) initKeywords(); if (keywords->find(x.str) != keywords->end()) x.tokenKind = T_KEYWORD; else x.tokenKind = T_IDENTIFIER; return true; }
Lexan::Lexan(char* filename) : eof(-1) { cout << filename << endl; fileName = new char [strlen(filename) + 1]; strcpy(fileName, filename); fin = new ifstream; fin->open(fileName); row = column = 1; lastCharValid = false; floatValue = 0.0; lastColumn = intValue = 0; initKeywords(); initTokens(); }
Tokens::Tokens(){ output = ""; initKeywords(); }
int interpret( int cmdArgc, char **cmdArgv ) { int i,r; long offset; /* initialize */ argCountStack = newStack(32); /* count of parameters */ blockStack = newStack(32); /* control block stack */ lineStack = newStack(32); /* current line number */ sharedStack = newStack(128); /* list of shared variables */ currentScope = NULL; /* routine being defined */ oldScopeP=0; /* intial oldScope=0 */ oldScope[oldScopeP]=currentScope; /*oldScope0 =NULL */ currentType = NULL; /* no type being defined */ initKeywords(); /* builtin keywords */ initBuiltins(); /* builtin functions */ initConsts(); /* builtin constants */ // if name of executable <> sdlBrt =autoboot r=strlen(cmdArgv[0]); #ifdef UNIX if (strncasecmp(cmdArgv[0]+(r-6),"sdlbrt",6)!=0 ){ #else if (strnicmp(cmdArgv[0]+(r-10),"sdlbrt.exe",10)!=0 && strnicmp(cmdArgv[0]+(r-6),"sdlbrt",6)!=0 ){ #endif /* load the bindfile */ offset=findBind( cmdArgv[0]); if (offset!=0){ if (!pushIncludeFile( cmdArgv[0], offset )){ ePrintf( Init, "File not found\n"); return -1; } } else{ #ifdef UNIX cmdArgv[cmdArgc]=(char *)malloc(strlen(cmdArgv[0])+16); strcpy(cmdArgv[cmdArgc],cmdArgv[0]); strcat(cmdArgv[cmdArgc],".sdlbas\0"); #else cmdArgv[cmdArgc]=(char *)malloc(strlen(cmdArgv[0])+16); strncpy(cmdArgv[cmdArgc],cmdArgv[0],strlen(cmdArgv[0])-4 ); strcat(cmdArgv[cmdArgc],".sdlbas\0"); #endif if (!pushIncludeFile( cmdArgv[cmdArgc], 0 )){ ePrintf( Init, "File not found\n"); return -1; } } /* shift args over by 1 */ cmdArgc++; for ( i = cmdArgc; i > 0; i-- ) { cmdArgv[i] = cmdArgv[i-1]; } /* first arg is "sdlbrt" */ strcpy(cmdArgv[0] ,"sdlBrt" ); } else{ if(cmdArgc>1){ if (!fileExist(cmdArgv[1]) ){ ePrintf( Init,"%s: file not found ....\n",cmdArgv[1]); exit(2); } } /* load the file */ if (!pushIncludeFile( cmdArgv[1], 0 )) { ePrintf( Init, "File not found\n"); return -1; } } /* parse the file */ yyparse(); /* deferred? */ if (deferredCode != NULL) { eval( deferredCode ); freeNode( deferredCode ); } return 0; } //____________________________________________________________________________________________________________________ int main(int argc, char **argv) { int r,r1; char *curdir; int audio,socket,debug,defaults; /* default settings */ audio=1; socket=1; defaults=1; debug=0; remove("sdlBasic.err"); /* the command line param */ r1=0; for (r=0;r<argc;r++){ cmdArgv[r1]=eCopyString(argv[r]); #ifdef UNIX if (strcasecmp(cmdArgv[r1],"--nodebug")==0) { printf("debugger disabled\n"); nodebug=1; } if (strcasecmp(cmdArgv[r1],"--nodefaults")==0) defaults=0; if (strcasecmp(cmdArgv[r1],"--nosound")==0) audio=0; if (strcasecmp(cmdArgv[r1],"--nosocket")==0) socket=0; if (strcasecmp(cmdArgv[r1],"--debug")==0) debug=1; if (strcasecmp(cmdArgv[r1],"--version")==0){ printf( "sdlBasic runtime(sdlBrt) release %s\n", RELEASE); exit(0); } if (strcasecmp(cmdArgv[r1],"--license")==0){ printf( "%s\n", LICENSE); exit(0); } if (strcasecmp(cmdArgv[r1],"--copyright")==0){ printf( "%s: see documentation for all contributors \n", COPYRIGHT); exit(0); } if (strcasecmp(cmdArgv[r1],"--help")==0){ printf( "sdlBasic runtime(sdlBrt) release %s\n syntax: sdlBrt [option] foo.sdlbas \n Options:\n --nosound : disable sound\n --nosocket : disable socket commands\n --nodefaults : disable creation of default display\n --debug : start the program step by step\n --version : software version\n --license : license of software\n --copyright: credits of software\n --help : this help\n",RELEASE ); exit(0); } #else if (stricmp(cmdArgv[r1],"--nodefaults")==0) defaults=0; if (stricmp(cmdArgv[r1],"--nosound")==0) audio=0; if (stricmp(cmdArgv[r1],"--nosocket")==0) socket=0; if (stricmp(cmdArgv[r1],"--debug")==0) debug=1; if (stricmp(cmdArgv[r1],"--version")==0){ printf( "sdlBasic runtime(sdlBrt) release %s\n", RELEASE); exit(0); } if (stricmp(cmdArgv[r1],"--license")==0){ printf( "%s\n", LICENSE); exit(0); } if (stricmp(cmdArgv[r1],"--copyright")==0){ printf( "%s: see documentation for all contributors \n", COPYRIGHT); exit(0); } if (strcasecmp(cmdArgv[r1],"--help")==0){ printf( "sdlBasic runtime(sdlBrt) release %s\n syntax: sdlBrt [option] foo.sdlbas \n Options:\n --nosound : disable sound\n --nosocket : disable socket commands\n --nodefaults : disable creation of default display\n --debug : start the program step by step\n --version : software version\n --license : license of software\n --copyright: credits of software\n --help : this help\n",RELEASE ); exit(0); } #endif if (cmdArgv[r1][0]!='-') r1++; else eFree(cmdArgv[r1]); } cmdArgc=r1; r=strlen(cmdArgv[0]); #ifdef UNIX if (strncasecmp(cmdArgv[0]+(r-6),"sdlbrt",6)==0 ){ #else if (strnicmp(cmdArgv[0]+(r-10),"sdlbrt.exe",10)==0 || strnicmp(cmdArgv[0]+(r-6),"sdlbrt",6)==0 ){ #endif // if missing file name return a little message of the syntax if (cmdArgc <= 1) { printf("sdlBasic runtime (sdlBrt) syntax: sdlBrt program.sdlbas\n"); return 0; } } /*initializing SDLengine module */ r=initialize(audio,socket,defaults); /* gp2x Problem with allocation strings ??? */ #if defined(WIN32) fontPath=(char *)malloc(256); strcpy(fontPath,getenv("WINDIR")); strcat(fontPath,"\\fonts\\DejaVuSans.ttf\0"); if (!fileExist(fontPath))fontPath=".\\DejaVuSans.ttf"; #else fontPath=(char *) malloc(256); strcpy(fontPath, font_prefix); strcat(fontPath,"/dejavu/DejaVuSans.ttf\0"); if (!fileExist(fontPath))fontPath="./DejaVuSans.ttf"; #endif /* #if defined(WIN32) fontPath=(char *)malloc(256); strcpy(fontPath,getenv("WINDIR")); strcat(fontPath,"\\fonts\\DejaVuSans.ttf\0"); if (!fileExist(fontPath))fontPath=".\\DejaVuSans.ttf"; #else fontPath=(char *) malloc(256); strcpy(fontPath,font_prefix); strcat(fontPath,"/dejavu/DejaVuSans.ttf\0"); if (!fileExist(fontPath))fontPath="./DejaVuSans.ttf"; #endif */ if (r != 0){ ePrintf( Init,"error number %d. Please reinstall sdlBasic.\n",r); return -1; } /*initialize basic data function buffer */ init_data(); /* initialize lvldir */ lvldir=0; /* initialize sistem memory bank */ init_membank(); if (cmdArgc<=1 ){ cmdArgv[1]=cmdArgv[0]; } /* autochange directory */ #ifdef UNIX if(cmdArgv[1][0]=='/'){ r=strlen(cmdArgv[1]); curdir=(char *)malloc(r+1); while(cmdArgv[1][r]!='/')r--; strncpy(curdir,cmdArgv[1],r); chdir(curdir); } #else if(cmdArgv[1][2]=='\\'){ r=strlen(cmdArgv[1]); curdir=(char *)malloc(r+1); while(cmdArgv[1][r]!='\\')r--; strncpy(curdir,cmdArgv[1],r); chdir(curdir); } #endif /* starting interpreter */ r= interpret(cmdArgc, cmdArgv); /* terminate SDLengine */ terminate(); return r; }