95 std::string::const_iterator& it )
97 for( ; it != aString.end(); ++it )
107 std::advance( it, 1 );
109 auto list = std::make_unique<SEXPR_LIST>(
m_lineNumber );
111 while( it != aString.end() && *it !=
')' )
119 std::advance( it, 1 );
123 std::unique_ptr<SEXPR> item =
parseString( aString, it );
124 list->AddChild( item.release() );
127 if( it != aString.end() )
128 std::advance( it, 1 );
132 else if( *it ==
')' )
136 else if( *it ==
'"' )
140 auto starting_it = it;
142 for( ; it != aString.end(); ++it )
149 if( ++it == aString.end() )
159 if( it == aString.end() )
162 auto str = std::make_unique<SEXPR_STRING>( std::string( starting_it, it ),
171 size_t startPos = std::distance( aString.begin(), it );
174 std::string tmp = aString.substr( startPos, closingPos - startPos );
177 if( closingPos != std::string::npos )
179 if( tmp.find_first_not_of(
"0123456789." ) == std::string::npos ||
180 ( tmp.size() > 1 && tmp[0] ==
'-'
181 && tmp.find_first_not_of(
"0123456789.", 1 ) == std::string::npos ) )
183 std::unique_ptr<SEXPR>
res;
185 if( tmp.find(
'.' ) != std::string::npos )
188 wxString stmp( tmp );
190 stmp.ToCDouble( &fnumb );
195 res = std::make_unique<SEXPR_INTEGER>(
199 std::advance( it, closingPos - startPos );
204 auto str = std::make_unique<SEXPR_SYMBOL>( tmp,
m_lineNumber );
205 std::advance( it, closingPos - startPos );