Initial stab at adding intersection, set difference, symmectric
difference, inner grouping to character classes. Still have 7
shift/reduce conflicts to resolve.
Adjustments to CC bracket tests.
Rejiggered the grammar. 162 shift/reduce conflicts, but virtually all of
them are inside character classes between promoting what's been parsed
to a cc_expr and continuing on to the right.
Cosmetic.
* Added (commented out) stuff for bison debug output.
* Increased precedence of '--' (subtraction) above '-' (range) in CCs.
* Don't reject negated CCs where the "inner" part is empty.
* Added some additional CC tests.
parseHexCodePoint should reject values > 0x10FFFF.
Added "what" utility for listing the contents of a given character class
in a given encoding.
Comments.
Improved parser error messages for ranges, and hoisted them out of
parser grammar. Adjusted precedence between set minus and hyphen, but
this seems to make no difference.
DRY: std::hex, std::uppercase, std::setfill are all sticky.
Forgot to leave space for null-terminating the error string. Oops! This
exemplifies the deplorable error-proneness of C strings, but we can't
avoid using them here, as error strings "cross the bar" into C-land.
Reformatted long line.
Specify friendly names for tokens for use in error messages.
Improved parse error messages. Still working on locations for unmatched
delimiters and nonatomic repetition.
Include API headers before private ones. This ensures that the compiler
will catch inadvertant hidden dependencies which would prevent use of
liblightgrep.
cstddef is C++, use stddef.h instead.
Temporarily disable parse error message tests while the messages are in
flux.