Changeset 319 in dev for trunk/abdev/BasicCompiler64/NumOpe.cpp
- Timestamp:
- Sep 9, 2007, 12:37:48 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/NumOpe.cpp
r318 r319 22 22 23 23 char *parameter = (char *)malloc( lstrlen( str ) + 32 ); 24 sprintf( parameter, "\"%s\"%c%c*Char", str, 1, ESC_AS ); 25 SetStringQuotes( parameter ); 24 sprintf( parameter, "%s%c%c*Char", str, 1, ESC_AS ); 26 25 27 26 Operator_New( *compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr() ) ); … … 429 428 GetArrayElement(termFull,VarName,ArrayElements); 430 429 if(ArrayElements[0]){ 431 GetVarType(VarName,resultType,false); 432 if( resultType.IsObject() ){ 433 CallIndexerGetterProc(UseReg,resultType,VarName,ArrayElements,resultType); 430 Type classType; 431 GetVarType(VarName,classType,false); 432 if( classType.IsObject() ) 433 { 434 CallIndexerGetterProc(UseReg,classType,VarName,ArrayElements,resultType); 434 435 435 436 isLiteral = false; … … 788 789 } 789 790 790 if(term[0]=='\"'){ 791 //リテラル文字列 792 if(!RemoveStringQuotes(term)){ 793 SetError(43,NULL,cp); 794 goto error; 795 } 796 i3=lstrlen(term); 797 StrLiteral: 798 799 if( baseType.IsObject() || baseType.IsNull() ){ 791 if( (term[0]=='e'||term[0]=='E') 792 && (term[1]=='x'||term[1]=='X') 793 && term[2]=='\"' 794 || term[0] == '\"' ) 795 { 796 if( baseType.IsObject() || baseType.IsNull() ) 797 { 800 798 //要求タイプがオブジェクト、または未定のとき 801 799 … … 814 812 } 815 813 814 bool isEx = true; 815 if( term[0] == '\"' ) 816 { 817 isEx = false; 818 } 819 820 if( isEx ) 821 { 822 // 拡張版リテラル文字列(エスケープシーケンス可能) 823 if(!RemoveStringQuotes(term+2)){ 824 SetError(43,NULL,cp); 825 goto error; 826 } 827 i3=FormatString_EscapeSequence(term+2); 828 term+=2; 829 } 830 else 831 { 832 // 通常文字列 833 if(!RemoveStringQuotes(term)){ 834 SetError(43,NULL,cp); 835 goto error; 836 } 837 i3=lstrlen(term); 838 } 839 StrLiteral: 840 816 841 type_stack[sp]=typeOfPtrChar; 817 842 bLiteralCalculation=0; … … 827 852 } 828 853 } 829 else if((term[0]=='e'||term[0]=='E')&&830 (term[1]=='x'||term[1]=='X')&&831 term[2]=='\"'){832 //拡張版リテラル文字列(エスケープシーケンス可能)833 if(!RemoveStringQuotes(term+2)){834 SetError(43,NULL,cp);835 goto error;836 }837 i3=FormatString_EscapeSequence(term+2);838 term+=2;839 840 goto StrLiteral;841 }842 854 else if(IsVariableTopChar(term[0])|| 843 855 term[0]=='*'|| 844 (term[0]=='.'&&IsVariableTopChar(term[1]))){ 856 (term[0]=='.'&&IsVariableTopChar(term[1]))) 857 { 845 858 ////////////////// 846 859 // 何らかの識別子 … … 938 951 //リテラル文字列 939 952 953 if( baseType.IsObject() || baseType.IsNull() ) 954 { 955 //要求タイプがオブジェクト、または未定のとき 956 957 //String型オブジェクトを生成 958 NewStringObject(UseReg,term); 959 960 type_stack[sp]=DEF_OBJECT; 961 index_stack[sp]=(LONG_PTR)compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr(); 962 bLiteralCalculation=0; 963 964 if(bXmm) pobj_reg->LockXmmReg(); 965 else pobj_reg->LockReg(); 966 967 sp++; 968 break; 969 } 970 940 971 double dbl = compiler.GetObjectModule().meta.GetGlobalConsts().GetDoubleData(term); 941 972 memcpy(&i64data,&dbl,sizeof(double)); … … 961 992 goto Literal; 962 993 } 963 /*else if(i3==DEF_STRING){964 //リテラル文字列965 966 //バイト数967 i3=(int)dbl;968 969 memcpy(term,temporary,i3);970 goto StrLiteral;971 }*/972 994 else{ 973 995 SetError(1,NULL,0);
Note:
See TracChangeset
for help on using the changeset viewer.