some argument parsing cleanup

deque
Marc Zinnschlag 11 years ago
parent a9f9dec923
commit 11a2c767cc

@ -777,11 +777,22 @@ namespace Compiler
++optionalCount;
}
}
else if (*iter=='X')
{
parser.reset();
parser.setOptional (true);
scanner.scan (parser);
if (optional && parser.isEmpty())
break;
}
else
{
parser.reset();
if (optional || *iter == 'X')
if (optional)
parser.setOptional (true);
scanner.scan (parser);
@ -789,20 +800,17 @@ namespace Compiler
if (optional && parser.isEmpty())
break;
if (*iter != 'X')
{
std::vector<Interpreter::Type_Code> tmp;
std::vector<Interpreter::Type_Code> tmp;
char type = parser.append (tmp);
char type = parser.append (tmp);
if (type!=*iter)
Generator::convert (tmp, type, *iter);
if (type!=*iter)
Generator::convert (tmp, type, *iter);
stack.push (tmp);
stack.push (tmp);
if (optional)
++optionalCount;
}
if (optional)
++optionalCount;
}
}

@ -21,7 +21,7 @@ namespace Compiler
s - Short <BR>
S - String, case preserved <BR>
x - Optional, ignored string argument
X - Optional, ignored integer argument
X - Optional, ignored float argument
**/
typedef std::string ScriptArgs;

Loading…
Cancel
Save