Changeset 296 in dev for trunk/abdev/BasicCompiler_Common/Compile.cpp
- Timestamp:
- Aug 23, 2007, 3:20:12 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/Compile.cpp
r288 r296 31 31 // トークンを取得 32 32 /////////////////////////////////////////////////// 33 void GetIdentifierToken( char *token, const char *source, int &pos ){ 33 void GetIdentifierToken( char *token, const char *source, int &pos ) 34 { 34 35 for( int i=0; ; i++, pos++ ){ 35 36 if( ! IsVariableChar( source[pos] ) ){ … … 39 40 token[i] = source[pos]; 40 41 } 42 } 43 void GetCommandToken( char *token, const char *source, int &pos ) 44 { 45 for( int i=0; ; i++, pos++ ){ 46 if( IsCommandDelimitation( source[pos] ) ){ 47 token[i] = 0; 48 break; 49 } 50 token[i] = source[pos]; 51 } 52 } 53 54 55 /////////////////////////////////////////////////// 56 // ジェネリクスのクラス型記述を分析 57 /////////////////////////////////////////////////// 58 void SplitGenericClassInstance( const char *fullName, char *className, std::vector<std::string> &typeParameters ) 59 { 60 int i = 0; 61 typeParameters.clear(); 62 63 //クラス名を取得 64 GetIdentifierToken( className, fullName, i ); 65 66 67 ///////////////////////////////////////////////////////// 68 // ☆★☆ ジェネリクスサポート ☆★☆ 69 if( fullName[i] == '<' ) 70 { 71 while( true ) 72 { 73 i++; 74 75 // 型パラメータを取得 76 char temporary[VN_SIZE]; 77 GetIdentifierToken( temporary, fullName, i ); 78 if( temporary[0] == '\0' ) 79 { 80 extern int cp; 81 SetError(1,NULL,cp); 82 } 83 84 typeParameters.push_back( temporary ); 85 86 if( fullName[i] == ',' ) 87 { 88 continue; 89 } 90 else if( fullName[i] == '>' ) 91 { 92 break; 93 } 94 else 95 { 96 extern int cp; 97 SetError(1,NULL,cp); 98 } 99 } 100 } 101 ///////////////////////////////////////////////////////// 41 102 } 42 103
Note:
See TracChangeset
for help on using the changeset viewer.