private Token _ReadNumber() { Debug.Assert(char.IsDigit(_current)); do { _buf.Append(_current); _NextChar(); } while (char.IsDigit(_current) || '.' == _current || '_' == _current); if (_current == 'e' || _current == 'E') { _buf.Append(_current); _NextChar(); if (_current == '+' || _current == '-') { _buf.Append(_current); _NextChar(); } } while (char.IsLetterOrDigit(_current) || '_' == _current) { _buf.Append(_current); _NextChar(); } MyNumber?num = MyNumber.TryParse(_buf.ToString()); if (num is null) { throw NewLexException($"{_buf} is not valid double"); } else { return(new Token(num)); } }
public override void Run() { ExpectTrue(MyNumber.TryParse("0x1234") is not null); ExpectTrue(Utils.Compare(MyNumber.TryParse("0x1234"), MyNumber.TryParse("0x1234")) == 0); //throw new NotImplementedException(); }