internal: modify var_assign structure
This commit is contained in:
parent
53d8ce01ce
commit
9342464590
2 changed files with 7 additions and 5 deletions
|
|
@ -314,7 +314,7 @@ std::string cmd::generate(int ind)
|
||||||
std::string ret;
|
std::string ret;
|
||||||
// var assigns
|
// var assigns
|
||||||
for(auto it: 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)
|
if(args!=nullptr && args->size()>0)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -154,7 +154,7 @@ std::pair<variable*, uint32_t> parse_var(const char* in, uint32_t size, uint32_t
|
||||||
ret->index=pp.first;
|
ret->index=pp.first;
|
||||||
i = pp.second;
|
i = pp.second;
|
||||||
if(in[i] != ']')
|
if(in[i] != ']')
|
||||||
throw PARSE_ERROR( "Expecting ']'", i );
|
throw PARSE_ERROR( "Expecting ']'", i );
|
||||||
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))
|
if(word_eq("]]", in, size, i, ARG_END))
|
||||||
{
|
{
|
||||||
ret->add(new arg("]]"));
|
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) )
|
if( !is_in(in[i], ARGLIST_END) )
|
||||||
throw PARSE_ERROR("Unexpected argument after ']]'", i);
|
throw PARSE_ERROR("Unexpected argument after ']]'", i);
|
||||||
break;
|
break;
|
||||||
|
|
@ -1109,6 +1109,7 @@ std::pair<cmd*, uint32_t> parse_cmd(const char* in, uint32_t size, uint32_t star
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
|
;
|
||||||
while(true) // parse var assigns
|
while(true) // parse var assigns
|
||||||
{
|
{
|
||||||
auto vp=parse_var(in, size, i, false, true);
|
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, ")");
|
auto pp=parse_arg(in, size, i+1, ")");
|
||||||
ta=pp.first;
|
ta=pp.first;
|
||||||
ta->insert(0, new string_subarg("(") );
|
ta->insert(0, new string_subarg("=(") );
|
||||||
ta->add(new string_subarg(")") );
|
ta->add(new string_subarg(")") );
|
||||||
i=pp.second+1;
|
i=pp.second+1;
|
||||||
}
|
}
|
||||||
else if( is_in(in[i], ARG_END) ) // no value : give empty value
|
else if( is_in(in[i], ARG_END) ) // no value : give empty value
|
||||||
{
|
{
|
||||||
ta = new arg;
|
ta = new arg("=");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
auto pp=parse_arg(in, size, i);
|
auto pp=parse_arg(in, size, i);
|
||||||
ta=pp.first;
|
ta=pp.first;
|
||||||
|
ta->insert(0, new string_subarg("="));
|
||||||
i=pp.second;
|
i=pp.second;
|
||||||
}
|
}
|
||||||
ret->var_assigns.push_back(std::make_pair(vp.first, ta));
|
ret->var_assigns.push_back(std::make_pair(vp.first, ta));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue