]> granicus.if.org Git - re2c/commit
Explicit cast of 'char' to 'unsigned char' in lexer.
authorUlya Trofimovich <skvadrik@gmail.com>
Tue, 11 Aug 2015 13:38:34 +0000 (14:38 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Tue, 11 Aug 2015 13:38:34 +0000 (14:38 +0100)
commitb5b2562ebe64e62676d276955d9067948a2b613e
treeb351637b981fdf350de94970b08f9cc603c5a486
parenta0fe9a05799ffe4d0ac8b56ec602ebfe213a0da7
Explicit cast of 'char' to 'unsigned char' in lexer.

Source code is in ASCII: pointers have type 'char *', but re2c
makes an implicit assumption that YYCTYPE is unsigned when it
generates comparisons.

At first glance making YYCTYPE 'char' instead of 'unsigned char'
seems to fix the problem (no more warnings). But it's only because
re2c-generated lexer happens to make no comparisons with constants
larget than 0x7F. Lexer rules may change a bit and then we'll have
lots of warnings about 'comparison between signed and unsigned
values' and 'case label exceeds maximal value for type', not
mentioning that it may lead to real errors.

Explicit cast makes sure thet all comparisons are between unsigned
values.
re2c/bootstrap/src/parse/scanner_lex.cc
re2c/src/parse/scanner_lex.re