示例#1
0
        protected ParserField CreateField(string aRegEx, string aFieldName, TParserValueType aValueType, int aCapturePos, int aCaptureLength, bool aRequiresNumberedCaptureGroup)
        {
            string      fieldName = CompressName(aFieldName);
            ParserField ret       = new ParserField(fieldName);

            // Update format specifier
            ParserFieldFormatSpecifier formatSpecifier = ret.FormatSpecifier;

            formatSpecifier.OriginalLocation = aCapturePos;
            formatSpecifier.OriginalLength   = aCaptureLength;

            // Surround in numbered group if needed...
            StringBuilder finalRegEx = new StringBuilder(aRegEx);

            if (aRequiresNumberedCaptureGroup)
            {
                finalRegEx.Insert(0, "(");
                finalRegEx.Append(")");
            }

            formatSpecifier.RegularExpressionString = finalRegEx.ToString();
            formatSpecifier.ExpectedType            = aValueType;

            return(ret);
        }
        internal void ExtractValue(Group aGroup)
        {
            string           fieldValue     = aGroup.Value;
            TParserValueType fieldValueType = FormatSpecifier.ExpectedType;

            //
            switch (fieldValueType)
            {
            case TParserValueType.EValueTypeString:
            {
                iFormatValue.SetValueString(fieldValue);
                break;
            }

            case TParserValueType.EValueTypeInt32:
            {
                int valInt32 = System.Convert.ToInt32(fieldValue);
                iFormatValue.SetValueInt(valInt32);
                break;
            }

            case TParserValueType.EValueTypeUint32:
            {
                int  numberBase = FormatSpecifier.NumberBase;
                uint valUint32  = System.Convert.ToUInt32(fieldValue, numberBase);
                iFormatValue.SetValueUint(valUint32);
            }
            break;

            case TParserValueType.EValueTypeUint64:
            {
                int   numberBase = FormatSpecifier.NumberBase;
                ulong valUint64  = System.Convert.ToUInt32(fieldValue, numberBase);
                iFormatValue.SetValueUint64(valUint64);
            }
            break;
            }
            //
            SetValue(iFormatSpecifier, iFormatValue);
            IsComplete = true;
        }
示例#3
0
        protected ParserField CreateField(string aRegEx, string aFieldName, TParserValueType aValueType, int aCapturePos, int aCaptureLength)
        {
            ParserField ret = CreateField(aRegEx, aFieldName, aValueType, aCapturePos, aCaptureLength, true);

            return(ret);
        }