--- parser3/src/main/compile_tools.C 2003/04/03 15:34:02 1.54.2.5.2.11 +++ parser3/src/main/compile_tools.C 2005/08/05 13:03:00 1.57.14.2 @@ -1,11 +1,11 @@ /** @file Parser: compiler support helper functions. - Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_COMPILE_TOOLS_C="$Date: 2003/04/03 15:34:02 $"; +static const char * const IDENT_COMPILE_TOOLS_C="$Date: 2005/08/05 13:03:00 $"; #include "compile_tools.h" #include "pa_string.h" @@ -19,17 +19,16 @@ Value* LA2V(ArrayOperation& literal_stri :0; } -void change_string_literal_to_double_literal(ArrayOperation& literal_string_array) { - if(literal_string_array[0].code==OP_VALUE) { - Value& value=literal_string_array[2/*opcode+origin*/].value->as_expr_result(); - literal_string_array.put(1, &value); - } +void maybe_change_string_literal_to_double_literal(ArrayOperation& literal_array) { + assert(literal_array[0].code==OP_VALUE); + VString& vstring=*static_cast(literal_array[2/*opcode+origin*/].value); + if(isdigit(vstring.string().first_char())) + literal_array.put(2/*opcode+origin*/, &vstring.as_expr_result()); } void change_string_literal_value(ArrayOperation& literal_string_array, const String& new_value) { - if(literal_string_array[0].code==OP_VALUE) { // extra safety - static_cast(literal_string_array[2/*opcode+origin*/].value)->set_string(new_value); - } + assert(literal_string_array[0].code==OP_VALUE); + static_cast(literal_string_array[2/*opcode+origin*/].value)->set_string(new_value); } void changetail_or_append(ArrayOperation& opcodes, @@ -65,4 +64,4 @@ void pop_LS(Parse_control& pc) { const String& Parse_control::alias_method(const String& name) { return (main_alias && name==main_method_name)?*main_alias:name; -} \ No newline at end of file +}