[Ur] Bug with oversized int literals and hexadecimal ones bigger than 32 bits

Adam Chlipala adamc at csail.mit.edu
Thu May 28 10:30:51 EDT 2015


Thanks, patch pushed!  I also removed the redundant line of code pointed 
out in your follow-up message.

On 05/26/2015 07:53 AM, Gabriel Riba wrote:
> Affected: urweb.lex
>
> 1. Oversized int literals throw an unhandled Overflow exception in SML 
> Basis Int64.fromString, making the lexer fail.
>
> Documentation: 
> http://sml-family.org/Basis/integer.html#SIG:INTEGER.scan:VAL
>
> Adding
>
> handle Overflow => NONE
>
> solves it.
>
> 2. Hexadecimal literals are defined too shortly, and refuse values 
> bigger then 32 bits.
>
> hexconst = 0x[0-9A-F]{1,8};
>
> The actual definition with max. repetitions specifier, causes an 
> oversized literal to be split in two tokens making the error ugly.
>
> It is better to accept the whole token and check for the Overflow when 
> converted, adding the exception handler as with the previous section.
>
> (This bug is from a proposal of mine, so It was my fault)



More information about the Ur mailing list