Changeset 319 in dev for trunk/abdev/BasicCompiler32/NumOpe.cpp
- Timestamp:
- Sep 9, 2007, 12:37:48 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/NumOpe.cpp
r301 r319 73 73 74 74 char *parameter = (char *)malloc( lstrlen( str ) + 32 ); 75 sprintf( parameter, "\"%s\"%c%c*Char", str, 1, ESC_AS ); 76 SetStringQuotes( parameter ); 75 sprintf( parameter, "%s%c%c*Char", str, 1, ESC_AS ); 77 76 78 77 Operator_New( *compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr() ) ); … … 763 762 } 764 763 765 if(term[0]=='\"'){ 766 //リテラル文字列 767 if(!RemoveStringQuotes(term)){ 768 SetError(43,NULL,cp); 769 goto error; 770 } 771 i3=lstrlen(term); 772 StrLiteral: 773 774 if( baseType.IsObject() || baseType.IsNull() ){ 764 if( (term[0]=='e'||term[0]=='E') 765 && (term[1]=='x'||term[1]=='X') 766 && term[2]=='\"' 767 || term[0] == '\"' ) 768 { 769 if( baseType.IsObject() || baseType.IsNull() ) 770 { 775 771 //要求タイプがオブジェクト、または未定のとき 776 772 … … 786 782 } 787 783 788 784 bool isEx = true; 785 if( term[0] == '\"' ) 786 { 787 isEx = false; 788 } 789 790 if( isEx ) 791 { 792 // 拡張版リテラル文字列(エスケープシーケンス可能) 793 if(!RemoveStringQuotes(term+2)){ 794 SetError(43,NULL,cp); 795 goto error; 796 } 797 i3=FormatString_EscapeSequence(term+2); 798 term+=2; 799 } 800 else 801 { 802 // 通常文字列 803 if(!RemoveStringQuotes(term)){ 804 SetError(43,NULL,cp); 805 goto error; 806 } 807 i3=lstrlen(term); 808 } 809 StrLiteral: 789 810 type_stack[sp]=typeOfPtrChar; 790 811 bLiteralCalculation=0; … … 794 815 //push DataSize 795 816 compiler.codeGenerator.op_push_V( i2, Schedule::DataTable ); 796 }797 else if((term[0]=='e'||term[0]=='E')&&798 (term[1]=='x'||term[1]=='X')&&799 term[2]=='\"'){800 //拡張版リテラル文字列(エスケープシーケンス可能)801 if(!RemoveStringQuotes(term+2)){802 SetError(43,NULL,cp);803 goto error;804 }805 i3=FormatString_EscapeSequence(term+2);806 term+=2;807 808 goto StrLiteral;809 817 } 810 818 else if(IsVariableTopChar(term[0])|| … … 896 904 //リテラル文字列 897 905 906 if( baseType.IsObject() || baseType.IsNull() ) 907 { 908 //要求タイプがオブジェクト、または未定のとき 909 910 //String型オブジェクトを生成 911 NewStringObject(term); 912 913 type_stack[sp]=DEF_OBJECT; 914 index_stack[sp]=(LONG_PTR)compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr(); 915 bLiteralCalculation=0; 916 917 sp++; 918 break; 919 } 920 898 921 double dbl = compiler.GetObjectModule().meta.GetGlobalConsts().GetDoubleData(term); 899 922 memcpy(&i64data,&dbl,sizeof(double));
Note:
See TracChangeset
for help on using the changeset viewer.