internal: modify var_assign structure

This commit is contained in:
zawz 2021-02-03 15:05:48 +01:00
parent 53d8ce01ce
commit 9342464590
2 changed files with 7 additions and 5 deletions

View file

@ -314,7 +314,7 @@ std::string cmd::generate(int ind)
std::string ret;
// var assigns
for(auto it: var_assigns)
ret += it.first->generate(ind) + '=' + it.second->generate(ind) + ' ';
ret += it.first->generate(ind) + it.second->generate(ind) + ' ';
if(args!=nullptr && args->size()>0)
{

View file

@ -154,7 +154,7 @@ std::pair<variable*, uint32_t> parse_var(const char* in, uint32_t size, uint32_t
ret->index=pp.first;
i = pp.second;
if(in[i] != ']')
throw PARSE_ERROR( "Expecting ']'", i );
throw PARSE_ERROR( "Expecting ']'", i );
i++;
}
}
@ -656,7 +656,7 @@ std::pair<arglist*, uint32_t> parse_arglist(const char* in, uint32_t size, uint3
if(word_eq("]]", in, size, i, ARG_END))
{
ret->add(new arg("]]"));
i = skip_chars(in, size, i+2, SEPARATORS);
i = skip_chars(in, size, i+2, SPACES);
if( !is_in(in[i], ARGLIST_END) )
throw PARSE_ERROR("Unexpected argument after ']]'", i);
break;
@ -1109,6 +1109,7 @@ std::pair<cmd*, uint32_t> parse_cmd(const char* in, uint32_t size, uint32_t star
try
{
#endif
;
while(true) // parse var assigns
{
auto vp=parse_var(in, size, i, false, true);
@ -1121,18 +1122,19 @@ std::pair<cmd*, uint32_t> parse_cmd(const char* in, uint32_t size, uint32_t star
{
auto pp=parse_arg(in, size, i+1, ")");
ta=pp.first;
ta->insert(0, new string_subarg("(") );
ta->insert(0, new string_subarg("=(") );
ta->add(new string_subarg(")") );
i=pp.second+1;
}
else if( is_in(in[i], ARG_END) ) // no value : give empty value
{
ta = new arg;
ta = new arg("=");
}
else
{
auto pp=parse_arg(in, size, i);
ta=pp.first;
ta->insert(0, new string_subarg("="));
i=pp.second;
}
ret->var_assigns.push_back(std::make_pair(vp.first, ta));