コード例 #1
0
        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));
            }
        }
コード例 #2
0
        public override void Run()
        {
            ExpectTrue(MyNumber.TryParse("0x1234") is not null);

            ExpectTrue(Utils.Compare(MyNumber.TryParse("0x1234"), MyNumber.TryParse("0x1234")) == 0);

            //throw new NotImplementedException();
        }