public new static TLiteralNumber Claim(StringClaimer claimer) { TLiteralNumber numb = new TLiteralNumber(); Claim claim = claimer.Claim(Number); if (!claim.Success) { return(null); } claim.Pass(); double v; Match m = claim.GetMatch(); if (m.Groups["integer"].Length > 0) { // x or b integer format. v = m.Groups["hex_val"].Length > 0 ? int.Parse(m.Groups["hex_val"].Value, NumberStyles.HexNumber) : Convert.ToInt32(m.Groups["bin_val"].Value, 2); } else { var num = m.Groups["int"].Length > 0 ? m.Groups["int"].Value : m.Groups["float"].Value; v = Convert.ToDouble(num); if (m.Groups["expon"].Length > 0) { for (int i = Convert.ToInt32(m.Groups["expon"].Value); i > 0; i--) { v *= 10; } } } if (m.Groups["negative"].Length > 0) // Has a - { v *= -1; } numb._value = new VarNumber(v); return(numb); }
public new static TLiteral Claim(StringClaimer claimer) { return(TLiteralNumber.Claim(claimer) ?? TLiteralStringSimple.Claim(claimer) as TLiteral); }