Battle_Script_Pro.Form1.ParseWordParameter C# (CSharp) Method

ParseWordParameter() private method

private ParseWordParameter ( string input, int lineNumber, int parameterNumber, bool dynamicPointersAllowed ) : ReturnWorked
input string
lineNumber int
parameterNumber int
dynamicPointersAllowed bool
return ReturnWorked
        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));
            }
        }
Form1