]> granicus.if.org Git - re2c/commit
Compacted keys representation (with '--skeleton').
authorUlya Trofimovich <skvadrik@gmail.com>
Mon, 14 Sep 2015 12:19:15 +0000 (13:19 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Mon, 14 Sep 2015 12:19:15 +0000 (13:19 +0100)
commitae656007968d9f73e74bf083bcb3a4369f45f076
treeb513cbe88867b569aecbea68049811932229819f
parent29859ce86538c5ea84b65cd17d779d71cf3ef102
Compacted keys representation (with '--skeleton').

Determine maximal path length and maximal rule number while constructing
skeleton; take maximim of these two values; choose unsigned integer type
of minimal width capable of holding maximim.

Note: re2c operates on exact-width integers, but the generated program
doesn't (it might not have <stdint.h>). When generating the program,
re2c choses one of unsigned 'char', 'short', 'int' and 'long' types
(that one 'sizeof' which is equal to the disired key size). re2c makes
some implicit assumptions (generated program is run on the same platform
as re2c, byte consists of 8 bits, etc.). Perhaps re2c should hardcode
these assumptions in the generated program and check them on start.
re2c/src/codegen/emit_dfa.cc
re2c/src/codegen/skeleton/generate_code.cc
re2c/src/codegen/skeleton/generate_data.cc
re2c/src/codegen/skeleton/maxlen.cc
re2c/src/codegen/skeleton/skeleton.cc
re2c/src/codegen/skeleton/skeleton.h