Ejemplo n.º 1
0
        private TokenBuffer GetNumber(int c)
        {
            if (c == '0')
            {
                int buf = this.Reader.Peek();
                if (buf == 'x' || buf == 'X')
                {
                    this.Reader.Read();
                    if (!EcmaChar.IsHexDigit(this.Reader.Peek()))
                    {
                        throw new EcmaRuntimeException("After 0X there must be a hex digit");
                    }
                    return(new TokenBuffer(TokenType.Number, Convert.ToUInt32(((char)this.Reader.Read()).ToString(), 16).ToString(), this.LastLineStart));
                }
            }

            StringBuilder builder = new StringBuilder();

            builder.Append((char)c);
            GetInt(builder);
            if (this.Reader.Peek() == '.')
            {
                this.Reader.Read();
                builder.Append(".");
                this.GetInt(builder);
            }
            if (this.Reader.Peek() == 'e' || this.Reader.Peek() == 'E')
            {
                builder.Append((char)this.Reader.Read());
            }

            return(new TokenBuffer(TokenType.Number, builder.ToString(), this.LastLineStart));
        }
Ejemplo n.º 2
0
        private char GetStringUnicode()
        {
            StringBuilder builder = new StringBuilder();

            if (!EcmaChar.IsHexDigit(this.Reader.Peek()))
            {
                throw new EcmaRuntimeException("After \\u there must be a hex digit");
            }
            builder.Append((char)this.Reader.Read());

            if (!EcmaChar.IsHexDigit(this.Reader.Peek()))
            {
                throw new EcmaRuntimeException("After \\u[hex] there must be a hex digit");
            }
            builder.Append((char)this.Reader.Read());

            if (!EcmaChar.IsHexDigit(this.Reader.Peek()))
            {
                throw new EcmaRuntimeException("After \\u[hex][hex] there must be a hex digit");
            }
            builder.Append((char)this.Reader.Read());

            if (!EcmaChar.IsHexDigit(this.Reader.Peek()))
            {
                throw new EcmaRuntimeException("After \\u[hex][hex][hex] there must be a hex digit");
            }
            builder.Append((char)this.Reader.Read());

            return((char)Convert.ToUInt32(builder.ToString(), 16));
        }