Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public new static TLiteral Claim(StringClaimer claimer)
 {
     return(TLiteralNumber.Claim(claimer) ??
            TLiteralStringSimple.Claim(claimer)     as TLiteral);
 }