private ReturnWorked ParseWordParameter(string input, int lineNumber, int parameterNumber, bool dynamicPointersAllowed)
{
uint temp = 0;
bool succeeded = UInt32.TryParse(input, out temp);
if (!succeeded && !input.StartsWith("@"))
{
uint value = 0;
try
{
value = UInt32.Parse(ToDecimal(input));
}
catch (OverflowException)
{
return (new ReturnWorked(false, Convert.ToUInt32(0)));
}
catch
{
uint potentialValue = 0;
bool success = userDefinitions.TryGetValue(input.ToUpper(), out potentialValue);
if (success)
{
return (new ReturnWorked(true, potentialValue));
}
success = keywords.TryGetValue(input.ToUpper(), out potentialValue);
if (success)
{
return (new ReturnWorked(true, potentialValue));
}
return (new ReturnWorked(false, 0));
}
return (new ReturnWorked(true, value));
}
else if (input.StartsWith("@"))
{
if (dynamicPointersAllowed)
{
if (dynamicLocationSet)
{
bool notIn = true;
foreach (DynamicPointer dp in pointerNames.Keys)
{
if (dp.Name.Equals(input.Substring(1)))
{
notIn = false;
break;
}
}
if (notIn)
{
pointerNames.Add(new DynamicPointer(input.Substring(1), lineNumber, parameterNumber), false);
}
return (new ReturnWorked(true, input.Substring(1), true));
}
else
{
return (new ReturnWorked(false, "Dynamic search location not set", false));
}
}
else
{
return (new ReturnWorked(false, "Dynamic Pointers Not Allowed in command at line " + lineNumber + ", parameter " + parameterNumber, false));
}
}
else
{
uint value = 0;
try
{
value = UInt32.Parse(input);
}
catch (OverflowException)
{
return (new ReturnWorked(false, Convert.ToUInt32(0)));
}
catch
{
uint potentialValue = 0;
bool success = userDefinitions.TryGetValue(input.ToUpper(), out potentialValue);
if (success)
{
return (new ReturnWorked(true, potentialValue));
}
success = keywords.TryGetValue(input.ToUpper(), out potentialValue);
if (success)
{
return (new ReturnWorked(true, potentialValue));
}
return (new ReturnWorked(false, "Error parsing parameter on line " + lineNumber + ", parameter " + (parameterNumber + 1), false));
}
return (new ReturnWorked(true, value));
}
}