Esempio n. 1
0
        private LogicalTable.ControlCode ParseLine_ControlCode(string Input)
        {
            if (!ValidateNonStdEntry(Input)) throw new FormatException("Malformed entry");

            string[] entrysplit = Input.Split(new char[] { '=' }, 2);
            if (entrysplit[1].Contains(','))
            {
                // has arguments, parse them
                var paramsplit = entrysplit[1].Split(',');
                var paramlist = new LogicalTable.ControlCode.Parameter[paramsplit.Length - 1];
                for (int t = 1; t < paramsplit.Length; t++)
                {
                    if (!paramsplit[t].Contains('='))
                        throw new ArgumentException("Malformed parameter");
                    var paramdefsplit = paramsplit[t].Split('=');
                    switch (paramdefsplit[1].ToUpper())
                    {
                        case "%X":
                            paramlist[t-1] =
                                new LogicalTable.ControlCode.Parameter(
                                    LogicalTable.ControlCode.Parameter.NumberType.Hex, paramdefsplit[0]);
                            break;
                        case "%B":
                            paramlist[t-1] =
                                new LogicalTable.ControlCode.Parameter(
                                    LogicalTable.ControlCode.Parameter.NumberType.Binary, paramdefsplit[0]);
                            break;
                        case "%D":
                            paramlist[t-1] =
                                new LogicalTable.ControlCode.Parameter(
                                    LogicalTable.ControlCode.Parameter.NumberType.Decimal, paramdefsplit[0]);
                            break;
                        default:
                            throw new ArgumentException("Invalid placeholder type");
                    }

                }

                // param list object has been created
                if (paramsplit[0].Substring(paramsplit[0].Length - 1) != "]")
                {
                    var formatsplit = paramsplit[0].Split(']');
                    formatsplit[1] = formatsplit[1].Replace("\\n", Environment.NewLine);
                    return new LogicalTable.ControlCode(formatsplit[0].Substring(1), formatsplit[1], paramlist);
                }
                else
                    return new LogicalTable.ControlCode(GetLabel(paramsplit[0]), null, paramlist);
            }
            else  // no parameters
            {
                if (entrysplit[1].Substring(entrysplit[1].Length) != "]")
                {
                    var formatsplit = entrysplit[1].Split(']');
                    formatsplit[1] = formatsplit[1].Replace("\\n", Environment.NewLine);
                    return new LogicalTable.ControlCode(formatsplit[0].Substring(1), formatsplit[1]);
                }
                else
                    return new LogicalTable.ControlCode(GetLabel(entrysplit[1]));
            }
        }
Esempio n. 2
0
        private LogicalTable.ControlCode ParseLine_ControlCode(string Input)
        {
            if (!ValidateNonStdEntry(Input))
            {
                throw new FormatException("Malformed entry");
            }

            string[] entrysplit = Input.Split(new char[] { '=' }, 2);
            if (entrysplit[1].Contains(','))
            {
                // has arguments, parse them
                var paramsplit = entrysplit[1].Split(',');
                var paramlist  = new LogicalTable.ControlCode.Parameter[paramsplit.Length - 1];
                for (int t = 1; t < paramsplit.Length; t++)
                {
                    if (!paramsplit[t].Contains('='))
                    {
                        throw new ArgumentException("Malformed parameter");
                    }
                    var paramdefsplit = paramsplit[t].Split('=');
                    switch (paramdefsplit[1].ToUpper())
                    {
                    case "%X":
                        paramlist[t - 1] =
                            new LogicalTable.ControlCode.Parameter(
                                LogicalTable.ControlCode.Parameter.NumberType.Hex, paramdefsplit[0]);
                        break;

                    case "%B":
                        paramlist[t - 1] =
                            new LogicalTable.ControlCode.Parameter(
                                LogicalTable.ControlCode.Parameter.NumberType.Binary, paramdefsplit[0]);
                        break;

                    case "%D":
                        paramlist[t - 1] =
                            new LogicalTable.ControlCode.Parameter(
                                LogicalTable.ControlCode.Parameter.NumberType.Decimal, paramdefsplit[0]);
                        break;

                    default:
                        throw new ArgumentException("Invalid placeholder type");
                    }
                }

                // param list object has been created
                if (paramsplit[0].Substring(paramsplit[0].Length - 1) != "]")
                {
                    var formatsplit = paramsplit[0].Split(']');
                    formatsplit[1] = formatsplit[1].Replace("\\n", Environment.NewLine);
                    return(new LogicalTable.ControlCode(formatsplit[0].Substring(1), formatsplit[1], paramlist));
                }
                else
                {
                    return(new LogicalTable.ControlCode(GetLabel(paramsplit[0]), null, paramlist));
                }
            }
            else  // no parameters
            {
                if (entrysplit[1].Substring(entrysplit[1].Length) != "]")
                {
                    var formatsplit = entrysplit[1].Split(']');
                    formatsplit[1] = formatsplit[1].Replace("\\n", Environment.NewLine);
                    return(new LogicalTable.ControlCode(formatsplit[0].Substring(1), formatsplit[1]));
                }
                else
                {
                    return(new LogicalTable.ControlCode(GetLabel(entrysplit[1])));
                }
            }
        }