FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

GitHub Viewer

#include "daScript/misc/platform.h" #include "daScript/ast/ast.h" #include "daScript/ast/ast_expressions.h" #include "../parser/parser_state.h" typedef void * yyscan_t; union YYSTYPE; #define YY_EXTRA_TYPE das::DasParserState * #define YY_NO_UNISTD_H #include "../parser/lex.yy.h" void das_yybegin(const char * str, uint32_t len, yyscan_t yyscanner); int das_yyparse(yyscan_t yyscanner); namespace das { bool isUtf8Text ( const char * src, uint32_t length ) { if ( length>=3 ) { auto usrc = (const uint8_t *)src; if ( usrc[0]==0xef && usrc[1]==0xbb && usrc[2]==0xbf) { return true; } } return false; } __forceinline bool isalphaE ( int ch ) { return (ch>='a' && ch='A' && ch='0' && ch='a' && ch='A' && chgetSourceAndLength(src, length); if ( isUtf8Text(src,length) ) { // skip utf8 byte order mark src += 3; length -= 3; } const char * src_end = src + length; bool wb = true; while ( src < src_end ) { if ( src[0]=='"' ) { src ++; while ( src < src_end && src[0]!='"' ) { src ++; } src ++; wb = true; continue; } else if ( src[0]=='/' && src[1]=='/' ) { while ( src < src_end && !(src[0]=='\n') ) { src ++; } src ++; wb = true; continue; } else if ( src[0]=='/' && src[1]=='*' ) { int depth = 0; while ( src < src_end ) { if ( src[0]=='/' && src[1]=='*' ) { depth ++; src += 2; } else if ( src[0]=='*' && src[1]=='/' ) { if ( --depth==0 ) break; src += 2; } else { src ++; } } src +=2; wb = true; continue; } else if ( wb && ((src+8)= src_end ) { continue; } if ( src[0]=='_' || isalphaE(src[0]) || src[0] == '%' || src[0] == '.' || src[0]=='/' ) { string mod; mod += *src++; while ( src < src_end && (isalnumE(src[0]) || src[0]=='_' || src[0]=='.' || src[0]=='/') ) { mod += *src ++; } if ( isReq ) { req.push_back(mod); } else if ( isInc ) { string incFileName = access->getIncludeFileName(fi->name,mod); auto info = access->getFileInfo(incFileName); if ( info ) { if ( collected.find(info)==collected.end() ) { collected.insert(info); getAllRequireReq(info, access, req, collected); } } } continue; } else { wb = true; goto nextChar; } } else { wb = false; goto nextChar; } } else { goto nextChar; } } nextChar: wb = src[0]!='_' && (wb ? !isalnumE(src[0]) : !isalphaE(src[0])); src ++; } } vector getAllRequire ( FileInfo * fi, const FileAccessPtr & access ) { das_set collected; vector req; getAllRequireReq(fi, access, req, collected); return req; } string getModuleName ( const string & nameWithDots ) { auto idx = nameWithDots.find_last_of("./"); if ( idx==string::npos ) return nameWithDots; return nameWithDots.substr(idx+1); } string getModuleFileName ( const string & nameWithDots ) { auto fname = nameWithDots; // TODO: should we? replace ( fname.begin(), fname.end(), '.', '/' ); return fname; } bool addRequirements(const string & fileName, ModuleGroup & libGroup, Module * mod, const FileAccessPtr & access, vector & notAllowed, TextWriter * log, int tab ) { if ( !access->isModuleAllowed(mod->name, fileName) ) { notAllowed.push_back(mod->name); if ( log ) { *log

Back | FazBrowse Home | New Git URL